【发布时间】:2010-10-17 01:29:37
【问题描述】:
我想打印出每个进程的整数数组的内容。问题是,由于竞态条件,一切都变得杂乱无章。
什么是最简单的解决方案?我不想调试。我想显示内容,因为我正在做排序算法。所以在排序前后显示是很有用的。
我在 lock.c 中添加了这个:
#include <stdio.h>
static int lock=0; //Don't use if timing execution
void capture(int rank) {
while(lock!=0);
lock = 1;
printf("\nCaptured by %d\n", rank);
}
void release() {
lock = 0;
}
在打印之前调用 capture(),然后在打印之后调用 release()。是的,这是一个类似信号量的 hack。但它不起作用,有什么想法吗?
【问题讨论】:
-
当你说“它不工作”时,你是什么意思:个人,我怀疑你的意思是不同线程的输出混淆了?是这个意思吗?
标签: c synchronization mpi