83 基于信号量的线程同步

83.1 资源计数

信号量是一种在较多线程瓜分较少资源时使用的停——等机制。一个信号量可以理解为表示某种资源份数的计数器。一个线程在获取一定份数的资源之前,会先尝试对信号量执行相应数值的减法操作。够减说明资源充足,线程可以获得并使用这些资源;不够减说明资源匮乏,线程应放弃对资源的获取,并进入等待状态。得到资源的线程,一旦完成对资源的使用,必须释放所持有的资源,即对信号量执行相应数值的加法操作。这时那些正在等待资源的线程将获得通知,并在对信号量执行减法成功后,拥有并使用相应份数的资源。

83.2 QSemaphore

在Qt中,通过QSemaphore类表示信号量。该类提供如下方法:

83.3 案例

83.3.1 创建项目

通过QtCreator,在C:\Users\Minwei\Projects\Qt路径下,创建名为Semaphore的控制台(Console)项目。

83.3.2 实现功能

C:\Users\Minwei\Projects\Qt\Semaphore\main.cpp:

83.3.3 测试验证

运行效果如图所示: