Multithreading 为什么我们要使用thread&;如果我们能用更高级的锁?

Multithreading 为什么我们要使用thread&;如果我们能用更高级的锁?,multithreading,concurrency,Multithreading,Concurrency,我刚刚接触到并发编程,我了解到锁是最简单的同步原语之一,人们几乎总是弄错 我的问题是:为什么他们不总是使用承诺(数据流变量)、csp、参与者等?这难道不能把我们从错误和僵局中拯救出来吗?不能用这个替换所有锁吗?其他问题是活锁、竞争条件和缺乏并行性。所有并发模型都不同程度地受到其中一些问题的影响 锁只是工具箱中的一个工具。他们有自己的甜点,其他车型也有 您越是考虑并发模型,就越能认识到它们实际上有多么相似。例如,actors加消息传递类似于每个actor一个锁,以及一次只能获取一个锁的附加规则。显

我刚刚接触到并发编程,我了解到锁是最简单的同步原语之一,人们几乎总是弄错


我的问题是:为什么他们不总是使用承诺(数据流变量)、csp、参与者等?这难道不能把我们从错误和僵局中拯救出来吗?不能用这个替换所有锁吗?

其他问题是活锁、竞争条件和缺乏并行性。所有并发模型都不同程度地受到其中一些问题的影响

锁只是工具箱中的一个工具。他们有自己的甜点,其他车型也有


您越是考虑并发模型,就越能认识到它们实际上有多么相似。例如,actors加消息传递类似于每个actor一个锁,以及一次只能获取一个锁的附加规则。显然,这保证了死锁和每个参与者的数据竞争的自由,但它不提供全局正确性。

其他问题是活锁、竞争条件和缺乏并行性。所有并发模型都不同程度地受到其中一些问题的影响

锁只是工具箱中的一个工具。他们有自己的甜点,其他车型也有


您越是考虑并发模型,就越能认识到它们实际上有多么相似。例如,actors加消息传递类似于每个actor一个锁,以及一次只能获取一个锁的附加规则。显然,这保证了死锁和每个参与者的数据竞争的自由,但它不提供全局正确性。

所以我们不能说参与者比锁更不容易出错?在某些用例中,他们更不容易出错,在某些情况下。为这项工作挑选合适的工具。我们被告知它们是所有问题的最终解决方案,现在它更有意义了。如果这是真的,你可以把整个应用程序变成一个单一的参与者,然后就可以完成了。。。这并不是那么容易。所以我们不能说参与者比锁更不容易出错?在一些用例中,他们更不容易出错,在一些更复杂的用例中。为这项工作挑选合适的工具。我们被告知它们是所有问题的最终解决方案,现在它更有意义了。如果这是真的,你可以把整个应用程序变成一个单一的参与者,然后就可以完成了。。。这并不容易,因为这些高级抽象并不理想。它们往往过于昂贵、限制性太强,或者使调试逻辑错误变得更加困难。我们都在等待软件工程的爱因斯坦有朝一日出现,因为这些高级抽象并不理想。它们往往过于昂贵、限制性太强,或者使调试逻辑错误变得更加困难。我们都在等待软件工程的爱因斯坦有朝一日出现。