algorithm - 是否有任何正在使用的并发算法可以在没有任何同步的情况下正常工作?

标签 algorithm concurrency theory

我看到或听到的所有并发程序的详细信息(诚然是一小部分)在某些时候都使用硬件同步功能,通常是某种形式的 compare-and-swap .问题是:是否存在任何并发程序,其中线程在整个生命周期中交互并在没有任何同步的情况下逃脱?

我想到的示例包括:

一个程序相当于一个线程在大量案例上运行是/否测试,而一大堆线程根据可能/否测试来标记案例。这不需要同步,因为脏数据只会影响性能而不影响正确性。

一个有许多线程更新数据结构的程序,其中任何现在有效的状态将始终有效,因此脏读或写不会使任何内容无效。这方面的一个例子是(我认为)path compression in the union-find algorithm .

最佳答案

如果您可以将工作分解成完全独立的 block ,那么是的,存在并发算法,其唯一的同步点是工作结束时所有线程加入的那个点。并行加速是能够分解成大小尽可能相似的任务的一个因素。

关于algorithm - 是否有任何正在使用的并发算法可以在没有任何同步的情况下正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2395316/

相关文章:

c++ - 从二维 vector 中找出最小 vector 元素的更好方法

arrays - 索引和小于 K 的网格中的点数

R-genalg 包 : Get Fittest From Past Generation

mysql - 如果一个查询等待另一个查询持有的锁,将如何发生死锁

java - "Happens-before"Java相关volatile字段说明

algorithm - 为什么语音识别困难?

functional-programming - 对于定点组合器 Y,\x.f(xx) 是什么

R +查找算法以匹配一系列相同元素内的值

concurrency - 通过同时运行多个实例来加速 rsync?

vb.net - 如何强制模块初始化(VB Windows 应用商店应用程序)?