void* worker(void*)
{
int clk = clock();
float val = 0;
for(int i = 0; i != 100000000; ++i)
{
val += sin(i);
}
printf("val: %f\n", val);
printf("worker: %d ms\n", clock() - clk);
return 0;
}
int main()
{
pthread_t tid;
pthread_create(&tid, NULL, worker, NULL);
int clk = clock();
float val = 0;
for(int i = 0; i != 100000000; ++i)
{
val += sin(i);
}
printf("val: %f\n", val);
printf("main: %d ms\n", clock() - clk);
pthread_join(tid, 0);
return 0;
}
主线程和工作线程应该运行同样快,但结果是:
val: 0.782206
worker: 5017 ms
val: 0.782206
main: 8252 ms
主线程慢得多,我不知道为什么....
问题解决了。这是编译器的问题,GCC(MinGW) 在 Windows 上的行为很奇怪。我在 Visual Studio 2012 中编译了代码,没有速度差异。