gpt4 book ai didi

synchronization - 测试和设置的用途是什么?

转载 作者:行者123 更新时间:2023-12-02 22:21:14 24 4
gpt4 key购买 nike

阅读测试和设置后 Wikipedia entry ,我仍然有一个问题“测试和设置将用于什么?”

我意识到你可以用它来实现互斥(如维基百科中所述),但它还有什么其他用途?

最佳答案

一个很好的例子是“增量”。

假设两个线程执行a = a + 1。假设 a 以值 100 开头。如果两个线程同时运行(多核),则两个线程都会将 a 加载为 100,递增到 101,然后存储该值回到a。错了!

使用 test-and-set,您可以说“将 a 设置为 101,但前提是它当前的值为 100。 ”在这种情况下,一个线程将通过该测试,但另一个线程将失败。在失败的情况下,线程可以重试整个语句,这次将 a 加载为 101。成功。

这通常比使用互斥体更快,因为:

  1. 大多数时候不存在竞争条件,因此更新无需获取某种互斥体即可进行。
  2. 即使在冲突期间,一个线程也根本不会被阻塞,并且另一个线程旋转并重试比在某些互斥体中将自身挂起要快。

关于synchronization - 测试和设置的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/120937/

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