多线程编程与USB设备开发全解析
1. 多线程编程中的互斥锁与条件变量
在多线程编程里,要实现线程间的高效协作,互斥锁(mutex)和条件变量(condition variable)是极为关键的工具。
1.1 互斥锁的使用
互斥锁用于确保线程对资源的独占访问。当一个线程需要独占访问某个资源时,它必须先锁定该资源的互斥锁。只有遵循先锁定的规则,协作线程才不会同时访问共享对象。
- pthread_mutex_lock函数
c int pthread_mutex_lock(pthread_mutex_t *mutex);
此函数的作用是锁定互斥锁。若成功锁定,返回值为零;若失败,则返回错误码(并非存储在errno中)。其可能出现的错误如下:
| 错误码 | 描述 |
| — | — |
| EINVAL | 互斥锁的协议属性值为PTHREAD_PRIO_PROTECT,且调用线程的优先级高于互斥锁的当前优先级上限;或者指定的互斥锁并非已初始化的互斥锁对象 |
| EAGAIN | 互斥锁的递归锁定次数达到最大值 |
| EDEADLK | 当前线程已经拥有该互斥锁 |
示例代码如下:
c pthread_mutex_t mutex; int rc; ... rc = pthread_mutex_lock(&mutex);
- pthread_mutex_unlock函数
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



