c – 在不使用条件变量的情况下唤醒线程的最快方法

前端之家收集整理的这篇文章主要介绍了c – 在不使用条件变量的情况下唤醒线程的最快方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图通过设置后台线程来解决一个特定任务来加速一段代码.当我有时间解决我的任务时,我想唤醒这些线程,完成工作并再次阻止它们等待下一个任务.任务总是一样的.

我尝试使用条件变量(和需要与它们一起使用的互斥量),但我最终放慢了代码的速度,而不是加快速度;主要是因为对所有需要的函数调用非常昂贵(pthread_cond_wait / pthread_cond_signal / pthread_mutex_lock / pthread_mutex_unlock).

使用线程池没有任何意义(我没有),因为它是一个过于通用的构造;在这里,我只想解决我的具体任务.根据实现情况,我还会为队列支付性能损失.

你有什么建议可以在不使用互斥锁或con_var的情况下快速唤醒吗?

我在设置线程中思考像定时器读取原子变量;如果变量设置为1,则线程将完成工作;如果它被设置为0,它们将进入睡眠状态几微秒(我将从微秒睡眠开始,因为我想避免使用可能对cpu来说太昂贵的自旋锁).你怎么看待这件事?任何建议都非常感谢.

我使用的是Linux,gcc,C和C.

解决方法

这些功能应该很快.如果它们占用了大部分时间,那么很可能是您经常尝试切换线程.

尝试缓冲工作队列,并在累积大量工作后发送信号.

如果由于任务之间的依赖性而无法做到这一点,那么您的应用程序根本不适合多线程.

猜你在找的C&C++相关文章