C++ Pthreads - 多线程比单线程慢

use*_*479 0 c++ performance multithreading posix pthreads

我正在使用pthreads库开发一个C++应用程序.程序中的每个线程都访问一个公共的unordered_map.程序运行速度慢于4个线程而不是1.我评论了线程中的所有代码,并且只留下了标记字符串的部分.单线程执行仍然更快,所以我得出的结论是地图不是问题.之后我在屏幕上打印了线程的ID,它们似乎按顺序执行.

在调用线程的函数中,我有一个while循环,它在一个数组中创建线程,其大小是线程数(让我们说'tn').每次创建线程时,我都会执行for循环来加入它们.(在pthread_join).虽然跑了很多次(不仅仅是4次).

可能有什么不对?

Jay*_*Jay 5

如果你正在运行一个简单的小程序,这往往是这种情况,因为启动线程,调度优先级,运行,上下文切换,然后同步的工作实际上可能需要更多的时间,然后作为单个进程运行它.

这里的要点是,当处理琐碎的问题时,它可能会运行得更慢.但另一个因素可能是您在CPU中实际拥有多少个核心.

  • @ user3309479你忘了在问题中提到. (3认同)