【发布时间】:2009-05-21 21:33:14
【问题描述】:
我最近阅读了很多有关事务性内存的文章。关于 TM 有一些炒作,所以很多人都对它充满热情,它确实为锁定的痛苦问题提供了解决方案,但你也经常看到抱怨:
- 你不能做 I/O
- 您必须编写原子部分,以便它们可以运行多次(注意您的局部变量!)
- 软件事务内存性能不佳
- [在此处插入您的小毛病]
我理解这些担忧:通常情况下,您会发现有关 STM 的文章仅在某些特定硬件上运行,这些硬件支持一些非常漂亮的原子操作(如 LL/SC),或者它必须由一些虚构的编译器支持,或者它要求 所有 对内存的访问都是事务性的,它引入了类型约束 monad 样式等。最重要的是:这些都是真正的问题。
这让我问自己:有什么理由反对在本地使用事务内存来代替锁?这是否已经带来了足够的价值,或者必须在所有地方使用事务内存,如果用过吗?
【问题讨论】:
标签: locking transactional-memory stm