代码之家  ›  专栏  ›  技术社区  ›  Fanatic23

非阻塞并发编程是真的吗?

  •  2
  • Fanatic23  · 技术社区  · 14 年前

    我一直在阅读关于非阻塞算法的随机链接,并将其用于并发编程。有没有使用C/C++的非阻塞算法的有用的库,哪些类型的并发数据结构从非阻塞算法的使用中获益最多?谢谢。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Steve Townsend    14 年前

    boost::thread 使用比较和交换语义 shared_mutex 在Windows上-只有在争用发生时才进行阻塞调用(使用信号量)。

    Windows本身支持通过 InitializeCriticalSectionAndSpinCount 尝试对MP系统上的高争用锁进行位优化。

    微软对线程性能非常重视,现在托管代码和本机代码都有了 slimline reader-writer locks .

    这也给了我一个插入我一直在等待的书的机会,因为它有一个关于这个主题的章节: C++ Concurrency in Action .

        2
  •  4
  •   Puppy    14 年前

    没有免费锁这样的东西。所有多线程算法都使用同步。你可以得到不使用显式锁但依赖于原子操作和其他类似“非锁”的无锁算法,但事实是你必须是一个非常好的程序员-并且知道你的目标平台和目标CPU的实现细节-以便写这样的算法。或者。我所知道的唯一真正有效的无锁算法是由微软工程师编写的360,他们必须在360中的CPU成功实现锁定之前获得设计文档。

    一个C++无锁算法会被应用到太多的CPU上,这样你就不能把它写在Booo::线程上。