gpt4 book ai didi

c - 在互斥锁内调用 sleep() 有什么缺点?

转载 作者:行者123 更新时间:2023-11-30 19:57:10 24 4
gpt4 key购买 nike

例如:

pthread_mutex_lock();
//Do something
sleep(1); //causes issues waiting while holding lock

pthread_mutex_unlock();

如果我们不想在互斥锁内使用 sleep ,解决方案是什么

最佳答案

根据经验,您通常(但并非总是)不希望长时间持有互斥体(否则,锁定同一互斥体的其他线程会等待太长时间),并且一整秒是对于处理器每秒执行数十亿次基本运算来说,这是一个很长的周期。

您可能想使用condition variables (因为pthread_cond_waitatomically释放互斥体),或者在锁定区域之外进行 sleep (或某些poll(2) ...)。您甚至可以在 Linux 上使用 pipe(7) -s - 或更便宜但特定于 Linux eventfd(2) - 在运行事件循环的线程之间进行通信。

coverity static source analyzer是启发式的,可能会发出错误警报。

花时间读一本好书Pthread tutorial .

关于c - 在互斥锁内调用 sleep() 有什么缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51929198/

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