Linux线程唤醒多次

Linux线程唤醒多次,第1张

生产者产出数据到消费者获得数据的延时较大,或者是CPU占用较高。

生产者唤醒逻辑。pthread_mutex_lock(&mutex)pthread_cond_signal(&cond)pthread_mutex_unlock(&mutex)

条件变量的 *** 作也需要达到线程安全的要求,因此需要互斥对象来进行保证。避免两个线程同时 *** 作条件变量引发问题。而通过查阅pthread_cond_wait()的相关资料可知,当程序运行到pthread_cond_wait()时,会将互斥对象锁释放,以便生产者能够顺利唤醒。而在消费者被成功唤醒,pthread_cond_wait()等待完成后,互斥对象会被重新上锁直到手动释放。

这个函数被信号中断就会返回-1的,系统调用约定就这样,我man了一下,有这么一句:

EINTR

The

call

was

interrupted

by

a

signal

handler

before

any

of

the

requested

events

occurred

or

the

timeout

expired

see

signal(7).

即调用被信号打断,返回-1,errno被设置为EINTR


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7315371.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-04
下一篇2023-04-04

发表评论

登录后才能评论

评论列表(0条)

    保存