【发布时间】:2011-04-13 14:49:15
【问题描述】:
我正在编写一个多线程 C++ 应用程序。当线程 A 执行计算量非常大的操作时,它会减慢线程 B、C 和 D。我该如何防止这种情况发生?
【问题讨论】:
-
您的系统有多少个内核?如果你的核心少于 4 个,那么一些核心将不得不在多个线程之间共享,这意味着一个线程的成本会影响其他线程......
-
我有 4 个核心。它是英特尔 i7。
-
4 个核心和一个线程会减慢其他线程的速度?要么你没有正确测量,要么线程在逻辑上相互锁定(也就是说,不是计算时间减慢了它)。因此
sleep可能无济于事。 -
定义:“它会减慢线程 B、C、D 的速度” 你如何衡量这个? 4 核并不意味着应用程序将在 4 个线程下以最佳方式运行。请记住,系统正在运行一大堆其他进程,每个进程都有自己的线程。
标签: c++ windows multithreading