boost :: asio:“strand”类型的同步原语是否有任何名称?

时间:2013-08-22 15:11:54

标签: c++ multithreading boost boost-asio

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

2 个答案:

答案 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一样。