类canceable的作用是提供一个通用的接口 通过它 可以来改变线程的状态
通过isCancelable来获取线程的状态
这是一个Cancelable的实现 通过cancel来取消一个线程
通过isCanceled来获取线程状态
当然在使用的时候还是要采用CountedPtr<。。。>的模板形式较好
访问控制:
在多线程编程中一个需要注意的问题就是要防止线程同时访问同一个资源
其中一个方法就是加锁的办法(mutual exclusion) 互斥(mutex)
zthread中的互斥头文件是mutex.h
看xia mutex类他有3个主要的函数
acquire
release
和tryAcquire
只要在每次使用资源的时候 acquire一下 释放的时候release下就可以解决同时访问的问题啦
有代码为例
但是对于同一线程的加锁和解锁都要求处于安全状态 这要求互斥锁总能够被释放
于是乎引入了一个新的类 Gauard
可以保持在对象创建的时候有一个acqiure在释放的时候有一个release
其类的头文件是Guard.h
简单的例子如下所示