1、四大基类
Cancelable
Cancelable提供了通用的方法来定义语义,调用了cancel()的Cancelable对象,将被置为disable。调用过cancel()ed的对象不必立即中止工作。通常被cancel()ed的对象尽可能快的继续执行完当前分配给它的工作,然后再变得不可用;但它不能接受任何新分配给它的工作。
cancel()函数:使一个Cancelable对象变为disable状态。拒绝接受新任务,尽可能快的完成当前任务;对一个Cancelable对象多于一次的cancel()操作都是无效的。isCanceled():查询Cancelable对象是否已经是canceled的状态。
Waitable
Waitable提供了通用的方法来定义语义,一个对象可以通过Waitable的接口来测试其内部状态。其他对象可以wait()一个Waitable对象。在这种情况下,如果调用线程的condition为false将会阻塞此线程。举例,Condition是一个Waitable对象,因此它的wait()是意思是阻塞线程直到有外部激励来改变Condition的内部状态为true。还有Barrier、Executor等。
Lockable
Lockable添加了通用方法acquire()、release(),它不一定是互斥访问的。
NonCopyable
一些对象是不能被拷贝的。特别是一些互斥访问的东西,例如,事件对象,队列,信号量等等
2、Mutex种类
Mutex
[定义]:Mutex对象用于串行的访问临界区,通过acquire()进入临界区,release()离开临界区。