Network programming 使用条件变量(POSIX并发api)真的会减慢并行网络代码的速度吗?

Network programming 使用条件变量(POSIX并发api)真的会减慢并行网络代码的速度吗?,network-programming,concurrent-programming,condition-variable,Network Programming,Concurrent Programming,Condition Variable,我目前正在编写一个应用程序,在多台计算机上管理并行渲染。为此,我在服务器应用程序上有一个线程池,用于管理TCP连接,每个问题一个线程。我希望在每个TCP线程中使用相同的条件变量,在其中一个网络线程收到数据时警告另一个线程 问题:要在POSIXAPI中使用signal函数,我必须使用互斥锁。这意味着,如果两个网络线程同时接收数据,它们将不得不等待互斥锁变为空闲状态才能继续执行 实际上,使用这个条件变量真的会减慢代码的速度吗?如果我不想使用它,我还可以在另一个线程(对条件变量调用wait的线程)中生

我目前正在编写一个应用程序,在多台计算机上管理并行渲染。为此,我在服务器应用程序上有一个线程池,用于管理TCP连接,每个问题一个线程。我希望在每个TCP线程中使用相同的条件变量,在其中一个网络线程收到数据时警告另一个线程

问题:要在POSIXAPI中使用
signal
函数,我必须使用互斥锁。这意味着,如果两个网络线程同时接收数据,它们将不得不等待互斥锁变为空闲状态才能继续执行

实际上,使用这个条件变量真的会减慢代码的速度吗?如果我不想使用它,我还可以在另一个线程(对条件变量调用
wait
的线程)中生成while指令,循环查看我的网络线程是否收到了什么


非常感谢:)

可能不会。如果您所做的只是锁定互斥体并向条件变量发送信号,那么这并不比在受互斥体保护的工作队列中获取下一项差

理论上,您可以使用while循环轮询标志来替换wait on条件变量,但是在访问该标志时,必须确保使用正确的同步(内存障碍)。这也要付出代价。由于各种原因,繁忙的等待也不理想,增加睡眠会带来延迟