boost - 深入使用无锁编程的高级抽象不流行的原因是什么?

标签 boost queue lock-free concurrent-programming

从我在无锁编程中收集到的信息来看,要正确地做是非常困难的……我同意。
光是想一些问题就头疼。但我想知道的是,为什么不是
有广泛使用的高级包装器(例如无锁队列和类似的东西)?
例如 boost 没有无锁库,尽管据我所知有人建议。
我的意思是我猜有很多应用程序你无法避免关键的事实
部分是负载的很大一部分。那么有哪些原因呢?是吗...

  • 专利 - 我听说一些与无锁编程相关的东西获得了专利。
  • 表现。
  • 谷歌和微软都有这样的内部库,但没有一个是公开的……
  • 还有什么?

  • 所以我的问题是:为什么使用无锁编程的高级抽象不是很深入
    流行,同时“常规”多线程编程是否“流行”?

    编辑:boost 有一个无锁库 :)

    最佳答案

    很少有人对该领域足够熟悉来实现易于使用的无锁库。在这少数人中,甚至更少的免费发布作品,并且几乎没有人做重要的额外工作以使图书馆可用 - 例如。发布完整的 API 文档等。他们倾向于只发布一个包含代码的 zip 文件,这几乎没用。然后当然你还需要找到一个用你想要使用的语言编写的库,在你正在使用的平台上编译,最后,这个库的词必须出去,所以人们知道它存在。

    专利是一个问题,因为它们限制了可以提供的内容。例如,据我所知,没有未获得专利的单链表。所有跳过列表的东西也都获得了大量专利。

    该领域的英雄是 Cliff Click,他提出了一个无锁哈希,他或多或少地将其置于公共(public)领域。

    你可以在这里找到我的无锁库;

    http://www.liblfds.org

    另一个是 Samy Bahra 的并发工具包;

    http://www.concurrencykit.org

    关于boost - 深入使用无锁编程的高级抽象不流行的原因是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8400114/

    相关文章:

    linux - PBS 通信错误 : Nodes can not communicate

    c++ - 在 boost::lockfree:queue 默认构造函数的情况下断言失败

    c++ - 其他线程是否会在合理的时间内看到对 `volatile` 字大小变量的写入?

    C++ boost 线程 : having a worker thread pause and unpause based on mutexes/conditions using a concurrent queue

    c++ - 如何将 C++ 队列的前面项移到后面?

    c++ - cmake:我必须按什么顺序指定 TARGET_LINK_LIBRARIES

    .net - 有没有办法获取队列中的最后一个元素?

    .net - .net 中的无锁结构

    multithreading - Boost::thread() 和 Nvidia CUDA 是否存在某种不兼容?

    boost - 在配置脚本/Autotools 中设置配置选项,并将 Boost 安装在不寻常的位置(EPEL 替代 boost 安装)