什么是线程中的关键部分

时间:2012-05-04 21:21:38

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

我正在阅读有关互斥,信号量和关键部分的内容。我理解mutex同步一个资源,这样只有一个线程在一个信号量允许特定的线程没有线程访问资源时访问它,但是关键部分做了什么?

1 个答案:

答案 0 :(得分:14)

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

在Windows用语中,关键部分是在特定于进程的互斥信号量中实现的数据结构(以及一些相关函数)(即,仅用于在单个进程中的线程之间进行锁定,而不是在单独进程之间进行锁定的数据结构)

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