C++11的新特性中,一些封装的库使得开发人员更加方便,比如thread,mutex等这些都是Linux常用的库,而关于semaphore信号量相关的封装,却没有做到。然而我们可以利用互斥量和条件变量来进行信号量的封装。
在Linux平台下,对于信号量的介绍,通常会提到P/V操作,它们是信号量的基础,它们的概念分别如下。
P操作 (wait操作):count 减1;如果 count < 0 那么挂起执行线程;
V操作 (signal操作):count 加1;如果 count <= 0 那么唤醒一个执行线程;
而本次在C++11中对信号量的封装,P操作被定义为成员函数