使用线程来加速任务

时间:2016-07-16 22:58:50

标签: c++ multithreading

第一次以这种方式使用线程(编程新手)并且我认为我对线程如何工作有所了解,我知道它允许你同时执行多个操作,但如果你是的话,它也不会减少工作量运行多个线程?

不应该运行2个线程做2个单独的事情完成任务两倍的速度? (显然使用多核cpu)

以下任务,例如,在1个线程中只运行1个任务需要2~秒,在2个线程中运行2个任务需要4秒而不是我假设仍需要2秒。

void func2(int x, int y) {} //do nothing
void func1(int x, int y) {} //do nothing
void line1() {
for (int x = 0; x < 4100; x++) {
    func1(x, 100);
    cout<< "1 " << x << endl;
}
}

void line2() {
for (int x = 0; x < 4100; x++) {
    func2(x, 200);
    cout<< "1 " << x << endl;
}
}

int main()
 {
std::thread t1(line1);
std::thread t2(line2);

    //int as;
    //cin >> as;
return 0;
 }

我可以做我想做的事吗?我不知道c ++是否只为所有线程使用1个核心?我只运行24%的CPU使用率,所以我怀疑它是因为所有4个内核都是完全使用的东西。当我达到24%时不应该这样,不是吗?除非调度程序在运行我的代码时已将所有4个内核分配给其他内核。

0 个答案:

没有答案