概述
文章目录
- 介绍
- 讨论
- 实际使用
- 结论
介绍
https://linux.die.net/man/3/pthread_cond_wait
从上面的使用说明上看,在调用pthread_cond_wait之前,需要确保,mutex已经lock了。如果调用这个函数的时候,不能确定mutex已经lock。可能会出现未定义的行为。潜在会留下一些问题,但是不一定什么时候出现,这就为问题调试埋下了隐患。
The pthread_cond_timedwait() and pthread_cond_wait() functions shall block on a condition variable. They shall be called with mutex locked by the calling thread or undefined behavior results.
讨论
下面这个链接里有一个关于返回值判断的讨论。结论是说不太可能发生这些个错误,里面有一些解释。有待商榷。
https://github.com/samtools/htslib/issues/1366
实际使用
std::mutex使用的时候,是有判断返回值,如果出现错误,直接抛出异常;没有具体区分是什么errno。
void
lock()
{
int __e = __gthread_mutex_lock(&_M_mutex);
// EINVAL, EAGAIN, EBUSY, EINVAL, EDEADLK(may)
if (__e)
__throw_system_error(__e);
}
结论
还是需要判断返回值;
如果出现错误,就需要从根源上找问题,不要等出现未定义行为时再找,因为找起来非常的困难。
最后
以上就是孤独高跟鞋为你收集整理的glibc: pthread: pthread_mutex_lock 返回值的判断,pthread_cond_wait介绍讨论实际使用结论的全部内容,希望文章能够帮你解决glibc: pthread: pthread_mutex_lock 返回值的判断,pthread_cond_wait介绍讨论实际使用结论所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复