资源说明:stm
该软件包不再维护。 请参阅以获取维护的前叉。
软件包stm为Go提供了操作。 这是编写并发代码(通道和互斥锁)的标准方法的替代方法。 STM使得以原子方式执行任意复杂的操作变得容易。 与传统锁定相比,它的主要优势之一是STM事务是可组合的,而锁定功能则不是-组合将死锁或释放功能之间的锁定(使其成为非原子的)。
stm API试图模仿Haskell的 ,但是由于Go的类型系统,这不可能完全实现。 我们被迫使用interface{}并输入断言。 此外,Haskell可以在编译时强制不在STM monad之外修改STM变量。 在Go中这是不可能的,因此在STM代码中使用指针时要格外小心。 另一个重要的偏离是stm.Atomically不返回值。 这会稍微缩短事务代码,但我不是100%正确的决定。 (替代方法是让每个事务处理函数返回一个interface{} 。)
与Haskell不
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。
English
