【发布时间】:2021-04-19 13:11:33
【问题描述】:
在this answer 的基础上构建,我想创建一个程序,它可以自行在机器的 CPU 上分配大量独立计算。计算输出集合 {0, ..., n - 1} 中的一个数字。我的目标只是计算大小为 n 的数组中每个输出的出现次数。
为了清楚起见,下面是每个子进程中的主循环的样子:
for (i = start_range_for_this_process; i < end_range_for_this_process; i++)
{
input = generate_input(i);
output = the_computation(input);
count[output]++;
}
我的问题如下:如果许多进程试图同时增加计数数组中的相同条目,我上面链接的答案是否安全?如果没有,有没有办法让进程一次使用一个数组,方法是要求它们在空闲时锁定它并在它不空闲时等待?
我尝试在网络上搜索,但没有找到我要查找的内容。我可能没有使用正确的关键字,因为我对并发编程不是很有经验。感谢您的帮助!
【问题讨论】:
标签: c concurrency locking fork shared-memory