我是靠谱客的博主 孤独高跟鞋,这篇文章主要介绍glibc: pthread: pthread_mutex_lock 返回值的判断,pthread_cond_wait介绍讨论实际使用结论,现在分享给大家,希望可以做个参考。

文章目录

  • 介绍
  • 讨论
  • 实际使用
  • 结论

介绍

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。

复制代码
1
2
3
4
5
6
7
8
9
10
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:内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(78)

评论列表共有 0 条评论

立即
投稿
返回
顶部