gpt4 book ai didi

c - 具有多个关键部分以同步两个共享队列

转载 作者:行者123 更新时间:2023-11-30 15:47:23 26 4
gpt4 key购买 nike

我有两个 40 线程写入共享队列 A,还有一个线程从共享队列 A 读取。

我已经使用同步线程

EnterCriticalSection(&cs);

//Do something

LeaveCriticalSection(&cs);

现在有另一个共享队列 B,40 个线程将写入共享队列 B,另一个单独的线程将从该共享队列 B 读取数据。现在,为了共享此共享队列 B 并在线程之间同步它,我是否需要有一个单独的关键部分(例如 csB)?或者只有一个关键部分 cs 可以达到目的?

最佳答案

您不必使用单独的关键部分,但使用单独的关键部分将允许更多的并行性。如果不同队列的读取和写入高度同步,您可以将队列 B 上的所有操作放在用于队列 A 的相同临界区中,在这种情况下,可以重用临界区。但请注意,这种重用也可能导致可能的死锁情况。

请注意,“关键部分”实际上是线程中的一系列代码。不同的关键部分可以共享的是这些代码范围的保护(通常是信号量)。因此,操作某个队列的所有代码范围都由同一守卫保护,以确保队列上的更新不会相互干扰,因为这可能会导致队列损坏。

关于c - 具有多个关键部分以同步两个共享队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17463617/

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