boost :: asio库提供了一个有趣的同步模型,使用“strands”来序列化对通常需要锁定的资源的访问。这通过将每个锁操作基本上转换为入队来增加并行性。
搜索“strands”只会产生关于asio的相关结果,即使它们看起来像是一个非常有用的多线程原语。是否还有其他一些我缺席的术语?
链接到asio strand文档:http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/reference/io_service__strand.html
答案 0 :(得分:1)
我不知道该构造的官方名称。
基于Boost.Asio(N2175 - Networking Library Proposal for TR2)的提案记录了strand
类,但未引用任何相关材料。此外,英特尔编译器文档在其执行模型中对strand进行了一些引用,将其定义为"没有任何并行控制结构的任何指令序列。"
答案 1 :(得分:0)
我已经开始在iOS和Mac OS X域中进行一些编程,它们与serial dispatch queue中称为Grand Central Dispatch的链有类似的概念。任务按照它们添加到队列的顺序执行,就像一个链。类似地,没有定义执行任务的线程,就像多个线程调用io_service::run()
时的asio一样。