问题标签 [lock-free]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C++ 无锁模板化 ObjectPool
它们存在吗?
*添加以澄清:
是否有任何可用的库实现无锁(它是线程安全的,并且可能实现自旋锁或其他轻量级同步)ObjectPool(http://en.wikipedia.org/wiki/Object_pool_pattern)使用模板用 C++ 语言编写?
c++ - Fober et al Lock-Free FIFO Queue:多个消费者和生产者?
我想知道 Fober 等人的论文http://nedko.arnaudov.name/soft/L17_Fober.pdf中提出的先进先出队列是否是多消费者并产生先进先出队列。如果不是,哪个是记录最好的多消费者和生产者 FIFO 队列?
谢谢
concurrency - 内存屏障与联锁操作
我正在努力提高我对记忆障碍的理解。假设我们有一个弱记忆模型,我们采用Dekker 算法。是否可以通过添加内存屏障使其在弱内存模型下正常工作?
我认为答案是一个令人惊讶的否定。原因(如果我是正确的)是,尽管可以使用内存屏障来确保读取不会超过另一个,但它不能确保读取不会看到陈旧的数据(例如缓存中的数据)。因此,它可能会在过去某个时间看到关键部分被解锁(根据 CPU 的缓存),但当前其他处理器可能会将其视为已锁定。如果我的理解是正确的,则必须使用互锁操作,例如通常称为测试和设置或比较和交换的操作,以确保多个处理器之间内存位置的值同步一致。
因此,我们是否可以正确地期望没有弱内存模型系统只会提供内存屏障?系统必须提供诸如测试和设置或比较和交换之类的操作才能有用。
我意识到流行的处理器,包括 x86,提供的内存模型比弱内存模型强得多。请集中讨论弱记忆模型。
(如果 Dekker 算法是一个糟糕的选择,如果可能,请选择另一个内存屏障可以成功实现正确同步的互斥算法。)
algorithm - 如何实现无锁跳过列表
我需要实现一个无锁跳过列表。我试图寻找文件。不幸的是,我发现的只是无锁单链表(有多种形式)。但是如何实现无锁跳过列表呢?
delphi - 寻找无锁容器
我正在寻找可以与 delphi 2007 一起使用的无锁容器(List/Queue/Stack...)。谢谢!
java - 线程库的无锁实现
我一直在阅读一些已发表的论文,其中详细介绍了可用于实现线程库的算法和数据结构。我在网上搜索以查看相同的任何现有实现,我只能找到 LFThreads(只有它的文档,而不是它的源代码)。
你们中有人研究过/使用过无锁线程库吗?我想通过它的源代码来看看它是如何使用的几个例子。
java - 多处理器编程:无锁堆栈
在为即将到来的并发系统考试做准备时,我正在尝试完成教科书“多处理器编程的艺术”中的一些问题。一个问题困扰着我:
练习 129:在我们的 LockFreeStack 对象中使用相同的共享 BackOff 对象来推送和弹出是否有意义?我们还能如何在 EliminationBackOffStack 中构建空间和时间的退避?
这个问题困扰着我,因为我首先想到的是它没有意义,因为退避对象所做的只是让进程等待,所以为什么不分享它呢?问题的第二部分完全让我无法理解,非常欢迎任何帮助。
LockFreeStack 的代码:
multithreading - 英特尔 Cpus 上原子 cmpxchg 指令的平均延迟
我正在为各种英特尔处理器的 lock cmpxchg 指令寻找一些平均延迟的参考。我无法找到关于该主题的任何好的参考资料,任何参考资料都会有很大帮助。
谢谢。
concurrency - 无锁和无阻塞有什么区别?
我正在阅读Transactional Memory (TM),我正在阅读的一篇论文说[ 1 ]:
事实上,在过去的十年里,是两种非阻塞算法,即无阻塞 DSTM 和无锁 FSTM 重新振兴了 STM 研究。
我的印象是锁定意味着阻塞。显然,我错了……
术语“无锁”和“无障碍”有什么区别?
c++ - 在多线程应用程序中,我将如何使用原子内置函数来设置/查看 time_t 值?
我有一个高度线程化的应用程序。
此应用程序中的线程从共享内存映射文件中读取。你可以假设他们从不写信给它。
现在我需要做的是扩展它,以便当阅读器完成对文件的读取时,它将更新共享时间戳。IEtime_t last_access_time = time(NULL);
这种情况经常发生,如果可能的话,我宁愿搜索无锁实现。
我将如何设置或检查last_access_time
在 G++ 中使用原子内置函数的当前值?
例如假设我有这些类成员并_last_access_time
初始化为time(NULL)
是否可以使其无锁?