use*_*479 0 c++ performance multithreading posix pthreads
我正在使用pthreads库开发一个C++应用程序.程序中的每个线程都访问一个公共的unordered_map.程序运行速度慢于4个线程而不是1.我评论了线程中的所有代码,并且只留下了标记字符串的部分.单线程执行仍然更快,所以我得出的结论是地图不是问题.之后我在屏幕上打印了线程的ID,它们似乎按顺序执行.
在调用线程的函数中,我有一个while循环,它在一个数组中创建线程,其大小是线程数(让我们说'tn').每次创建线程时,我都会执行for循环来加入它们.(在pthread_join).虽然跑了很多次(不仅仅是4次).
可能有什么不对?
如果你正在运行一个简单的小程序,这往往是这种情况,因为启动线程,调度优先级,运行,上下文切换,然后同步的工作实际上可能需要更多的时间,然后作为单个进程运行它.
这里的要点是,当处理琐碎的问题时,它可能会运行得更慢.但另一个因素可能是您在CPU中实际拥有多少个核心.
| 归档时间: |
|
| 查看次数: |
2757 次 |
| 最近记录: |