信号量
怎么简单的给自己解释这个机制呢?
那就借这个小代码解释吧
QSemaphore freeBytes(80);
QSemaphore usedBytes(0);
freeBytes.acquire();
buffer[i%BufferSize] = (i%BufferSize);
usedBytes.release();
freeBytes(80)表示信号量中的可用资源是80,而每次freeBytes.acquire()都会让可用资源-1,直到可用资源=0时,这时候就会引发阻塞;
另一方面可以通过usedBytes.release()来释放资源,每次release()都会让可用资源+1,这时候又有可用资源了,阻塞的地方也就再次开始运行了。
实例
经典的信号量说明机制:生产者和消费者
semaphore.h
#ifndef SEMAPHORE_H
#define SEMAPHORE_H
#include <QSemapho