当前位置:网站首页 > 编程语言 > 正文

条件变量和互斥锁定的区别(条件变量 互斥锁)



pthread_cond_wait总和一个互斥锁结合使用。在调用pthread_cond_wait前要先获取锁。pthread_cond_wait函数执行时先自动释放指定的锁,然后等待条件变量的变化。在函数调用返回之前,自动将指定的互斥量重新锁住。

int pthread_cond_signal(pthread_cond_t * cond);

pthread_cond_signal通过条件变量cond发送消息,若多个消息在等待,它只唤醒一个。pthread_cond_broadcast可以唤醒所有。调用pthread_cond_signal后要立刻释放互斥锁,因为pthread_cond_wait的最后一步是要将指定的互斥量重新锁住,如果pthread_cond_signal之后没有释放互斥锁,pthread_cond_wait仍然要阻塞。

下面是另一处说明:给出了函数运行全过程。 为什么在唤醒线程后要重新mutex加锁?

In Thread1:

In Thread2:

为什么要与pthread_mutex 一起使用呢? 这是为了应对 线程1在调用pthread_cond_wait()但线程1还没有进入wait cond的状态的时候,此时线程2调用了 cond_singal 的情况。 如果不用mutex锁的话,这个cond_singal就丢失了。加了锁的情况是,线程2必须等到 mutex 被释放(也就是 pthread_cod_wait() 释放锁并进入wait_cond状态 ,此时线程2上锁) 的时候才能调用cond_singal.

到此这篇条件变量和互斥锁定的区别(条件变量 互斥锁)的文章就 介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 删除虚拟内存会怎么样(怎么删除虚拟内存分区)2026-01-16 13:54:04
  • 485报文怎么抓取(485报文抓取工具)2026-01-16 13:54:04
  • libxml2丢失(libsman.dll丢失)2026-01-16 13:54:04
  • ip反查域名网站官网(ip反查域名的网站)2026-01-16 13:54:04
  • pv和dv试验是什么(dv和pv试验项目的区别)2026-01-16 13:54:04
  • github 速度(github速度很慢)2026-01-16 13:54:04
  • 中国阶级分层图(中国阶级分层图表)2026-01-16 13:54:04
  • 如何解决github下载慢(github下载太慢)2026-01-16 13:54:04
  • 预训练模型(生成式预训练模型)2026-01-16 13:54:04
  • 创建autokeys宏(autohotkey宏)2026-01-16 13:54:04
  • 全屏图片