我是靠谱客的博主 孤独高跟鞋,最近开发中收集的这篇文章主要介绍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。

    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介绍讨论实际使用结论所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部