我正在开发一个C ++程序,我正在处理几对数据(数组和矩阵)。由于时间要求,我需要并行处理相应的对,我打算使用std :: threads来达到这个目的。由于他们将调用相同的功能,我需要确保他们永远不会与彼此混淆#39;操作。
我想知道每个线程是否创建自己的调用堆栈,并且由不同线程调用的同一函数的本地函数变量对于调用者来说是唯一的。
此外,所有线程都需要写入同一输出数组的不同部分。即使它们没有写入数组的相同部分,它是否会引起问题?
答案 0 :(得分:2)
你没事。
每个线程都有自己的堆栈,当两个线程写入或读取不同的内存位置时,没有竞争条件。
您案件的潜在缺陷将是:
作为旁注,如果并行化就这么简单,那么看看OpenMP或类似的东西可能会很有趣,这使得这种并行化变得相当简单。