c++ - 什么是线程中的关键部分

标签 c++ multithreading thread-safety critical-section

我正在阅读有关互斥量、信号量和临界区的内容。我知道互斥锁同步资源,以便一次只有一个线程访问它信号量允许特定数量的线程访问资源但是关键部分做什么??

最佳答案

在正常使用中,临界区是一段必须连续执行的代码——也就是说,在任何给定时间只有一个线程可以执行该代码。您通常通过使用互斥信号量保护代码来实现这一点。

用 Windows 的说法,临界区是一种数据结构(和一些相关函数),它在特定于进程的互斥信号量中实现(即,仅用于在单个进程中的线程之间进行锁定,而不是在单独的进程之间进行锁定) .

有两种信号量。互斥信号量一次只允许一个线程执行。计数信号量允许您指定可以同时执行的最大线程数。互斥信号量是更常见的品种,但计数信号量肯定也有用途。

关于c++ - 什么是线程中的关键部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10456292/

相关文章:

c - 处理多线程应用程序中线程内的进程退出

c# - 锁定非线程安全的对象,这是可以接受的做法吗?

c++ - 如何在 C++ 中定义一个制作精良的消息类

c++ - new什么时候分配内存?

c - fork 新进程后线程ID是否改变?

java - 按顺序显示 x 个 ImageView y 秒

java - 两个线程访问同一个链表

java - 累加器是线程安全的吗?

c++ - 如何为vector of vector预留内存

c++ - Mac 上的 clang 不支持统一初始化吗?