第一次以这种方式使用线程(编程新手)并且我认为我对线程如何工作有所了解,我知道它允许你同时执行多个操作,但如果你是的话,它也不会减少工作量运行多个线程?
不应该运行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个内核分配给其他内核。