gpt4 book ai didi

c++ - 关键部分在线程或主程序中更好?

转载 作者:太空宇宙 更新时间:2023-11-04 14:57:49 25 4
gpt4 key购买 nike

我过去常常使用临界区(在 C++ 中)来阻止访问共享数据时的 ads 执行,但就工作而言,它们必须等到数据未被使用后才能阻塞,也许最好在主线程或线程中使用它们。那么,如果我希望我的主程序具有优先级而不被阻塞,我必须在其中使用关键部分来阻塞其他线程还是相反?

最佳答案

您似乎对什么是临界区以及它们如何工作有相当误解。

一般来说,关键部分 (CS) 是一段需要“独占”运行的代码——即,您需要确保在任何给定时间只有一个线程在执行该代码段。

正如在大多数环境中使用的术语,CS 实际上是一个互斥体——互斥信号量(也称为二进制信号量)。它是一种数据结构(和一组函数),用于确保一段代码得到独占执行(而不是引用代码本身)。

在任何情况下,只有当/如果您有一些代码将在多个线程中执行,并且您需要确保它在任何给定时间只在一个线程中执行时,CS 才有意义。这通常发生在您有一些共享数据时,如果有多个线程同时尝试操作这些数据,这些数据可能会损坏。当/如果出现这种情况,您需要为操作该数据的每个线程“使用”临界区,以确保共享数据未损坏。

确保特定线程保持响应是一个完全不同的问题。在大多数情况下,这意味着使用队列(一种可能性)允许线程快速将任务“移交”到其他线程,而争用最少(即,在处理数据期间不使用 CS, CS 只持续足够长的时间将数据结构放入队列,其他线程从那里进行处理。

关于c++ - 关键部分在线程或主程序中更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5030194/

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