gpt4 book ai didi

java - 为什么在线程锁定 (Java/C++) 上使用比较和交换,这是由一定的争用频率决定的吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:53:20 25 4
gpt4 key购买 nike

我了解 Compare 和 Swap 之间的区别,以及用于处理共享资源的线程锁定。我不明白的是为什么您会使用比较和交换而不是线程锁定。

当资源竞争激烈时,比较和交换会导致大量的CPU周期浪费,因此在这种情况下最好使用线程锁。

当争用较低时,可以使用 Compare 和 Swap,因为 CPU 周期浪费会低得多,而且这种浪费的成本可能 低于暂停和重新启动线程的成本。

当竞争较低时,使用的比较和交换或线程锁定操作的频率也将较低,因此成本节省将不那么显着。

我想我现在要问的是两个问题。

在 Java/C++ 中,几个 cpu 周期浪费的时间成本与暂停和重新启动线程几次的时间成本是多少?

是否有特定的争用频率(即每秒争用次数)决定使用一个比另一个更好?

我认为这对于低延迟应用程序变得更加重要。

最佳答案

这完全取决于您必须共享的资源是什么...请记住,线程锁定它自己必须保留一个变量,以便在内部进行比较和交换,因此成本已经产生...加上其他成本涉及线程上下文接通然后断开。

关于java - 为什么在线程锁定 (Java/C++) 上使用比较和交换,这是由一定的争用频率决定的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24406958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com