【发布时间】:2013-05-14 04:27:16
【问题描述】:
void task1(void* arg) {
static volatile long res = 1;
for (long i = 0; i < 100000000; ++i) {
res ^= (i + 1) * 3 >> 2;
}
}
4 个线程同时工作,在 30 秒内执行 task1 193 次。但是 4 个进程同时工作,在 30 秒内执行 task1 348 次。为什么会有这么大的差异? 我在 [Mac OS X 10.7.5,Intel Core i5(4 个逻辑核心)] 上对其进行了测试。想想看,Windows 和 Linux 的区别是一样的。
【问题讨论】:
-
你测试了多少次?它可能会极大地影响您的计算机在后台执行的操作。您可以发布您实例化流程和任务的代码吗?
-
好吧,
static volatile是否可以跨进程共享? -
如果没有
static volatile位,你能做同样的基准测试吗?
标签: c++ multithreading operating-system intel