gpt4 book ai didi

android - pthread_cond_wait 是完全信号安全的吗?

转载 作者:太空宇宙 更新时间:2023-11-04 10:16:33 27 4
gpt4 key购买 nike

我的堆栈中有一段代码正在运行,等待 pthread_cond_wait。信号被发送到同一进程,但信号处理程序中没有“pthread_cond_signal”代码来通知 pthread_cond_wait,但 pthread_cond_wait 仍被释放。还有其他线程通常执行“pthread_cond_wait”来释放等待,但此时没有一个处于 Activity 状态。

最佳答案

pthread_cond_wait() 可以在任何时间 唤醒,即使它没有收到信号。

这称为“虚假唤醒”,正确的代码必须处理此问题 - 在大多数情况下,调用 pthread_cond_wait() 的正确方法是在结构如下的循环中:

while (!condition_waiting_for)
pthread_cond_wait(&cond, &mutex);

condition_waiting_for 是您的线程正在等待变为真的程序共享状态的条件(例如,“作业队列不为空”)。

当您像这样构造您的 pthread_cond_wait() 调用时,虚假唤醒(包括可能由信号引起的唤醒)不会影响程序的正确性。

关于android - pthread_cond_wait 是完全信号安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45920871/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com