java - C 或 Java 的非玩具软件事务内存

标签 java c transactions shared-memory

我正在考虑通过 1 或 2 个大学类(class)的指导实验室来教授软件事务内存的使用的可能性。我只知道 Haskell 的 STM,但该类(class)的学生可能从未听说过它。

我已经在网上或其他问题中找到了一些此类库的列表(例如 http://en.wikipedia.org/wiki/Software_transactional_memory#C.2FC.2B.2B)。当你阅读本文时,我正在检查它们,但其中许多似乎没有很好的文档(大多数是研究原型(prototype),仅在论文中模糊描述,我宁愿教授一些更常用和有据可查的东西)。 此外,维基百科提供的许多链接都是悬空的。

总而言之,是否有针对工业项目(或至少非玩具项目,以确保一定水平的质量)的 STM 实现并且有据可查(以提供一些好的指示学生)?

编辑:我不是这门类(class)的老师,我只是帮他做实验。当然,学生们之前会学习并发和分布式算法的基础知识。这只是在类(class)结束时提出不同建议的想法。

最佳答案

生产质量的 STM 库不是作为教学工具,甚至不是“最佳实践”。对于任何学院/大学类(class)而言,值得学习的可能是代码的 1%;剩下的 99% 是具体的依赖于平台的内在极端情况。感兴趣的 1% 没有以任何方式突出显示,因此您无法找到它。

我对学院/大学类(class)(无论是入门类(class)还是高级类(class))的建议是自己实现 STM 构建 block (并且仅适用于 1 个平台)。

首先介绍问题:并发、缓存...

然后介绍一下我们有的atomic helpers:cas/cmpxchg、fence。

然后与您的学生一起构建示例,首先是简单的,然后是更难和更复杂的。

关于java - C 或 Java 的非玩具软件事务内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15064173/

相关文章:

C:打印二维数组的问题

transactions - EJB 3.0 事务边界从一个本地 EJB 调用另一个

java - 在测试中不使用 @Transactional 从 HibernateTemplate 迁移到 SessionFactory

postgresql - 读取由 postgresql 函数创建的未提交行?

java - Java中的P2P信使

java - 有没有办法将数组字符串分配给方法 java.lang.String.endswith(String suffix)

Java JDBC 准备语句最大参数标记

java - 无法在不关闭整个程序的情况下关闭 javafx 应用程序

c - 缓冲区溢出 esp 偏移量

c - 找到最小的好数