我正在尝试了解多线程以及如何使用它对一组数据并行执行任务。例如,如果我有一个数字数组,我想对其执行相当长的操作,我创建了以下代码来处理它:
mutex mm;
int nums[] = {10,20,30,40,50,60,70,80,90};
int index = 0;
void threadProc()
{
while (index != sizeof(nums)/sizeof(nums[0])) //While != to end of array
{
mm.lock();
int num = nums[index]; //Create local copy so we can unlock mutex for other threads
index++;
mm.unlock();
cout << num + 2; //Replace with time-consuming function
}
}
int main()
{
//Create 2 threads
thread t(threadProc);
thread a(threadProc);
t.join();
a.join();
}
由于我是根据我认为合乎逻辑的内容创建此代码,这是正确的方法吗?当然,我可以根据 CPU 拥有的硬件线程的数量添加更多线程,但我在这里寻求总体思路。如果这方面有任何好的资源(最好是面向 C++ 的),我会很高兴听到这些。谢谢!