gpt4 book ai didi

c - pthread_mutex_lock 需要很多时间

转载 作者:行者123 更新时间:2023-11-30 20:26:45 30 4
gpt4 key购买 nike

在我用 C 语言编写的应用程序中,我有两个线程:

第一个线程包含一个 UDP 监听器,用于进程间通信以实现信号发送目的。当信号到达该线程时,它会尝试使用 pthread_mutex_lock 锁定第二个线程。执行一些函数,然后解锁它,第二个线程继续正常执行。

我注意到锁定线程会消耗太多时间,例如大约 100 毫秒,这太多了。但有时它消耗的时间并不多,大约 10 毫秒,这对我来说还可以。

那么谁能告诉我发生了什么事,为什么我的可执行代码会出现如此多的时间变化?有没有更好的方法来以更好的方式实现我正在做的事情,即锁定和解锁?

注意:我在 Linux Ubuntu x64 位、2GB 内存和 2 个 CPU 的虚拟机中运行我的应用程序,最终输出处于 Release模式。

最佳答案

重述问题:您有一个负责处理某些数据的工作线程,以及一个控制工作线程事件的监视器线程。您想知道为什么通过互斥锁争用锁停止工作线程会出现延迟。

仅当线程尝试锁定互斥锁时,互斥锁才可能阻塞该线程。如果该线程在到达尝试锁定互斥体的点之前正在经历一些计算,您将遇到延迟。该延迟将根据监视线程锁定互斥体时线程执行的位置而变化。

减少延迟的唯一方法是减少互斥锁尝试之间的工作负载,但这也会降低吞吐量。

关于c - pthread_mutex_lock 需要很多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24410202/

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