각 프로세스의 정수 배열의 내용을 출력하고 싶습니다. 문제는 경쟁 조건으로 인해 어지럽다.MPI : 한번에 stdout - 1 프로세스 잠그기?
가장 간단한 솔루션은 무엇입니까? 나는 디버그하고 싶지 않다. 정렬 알고리즘을 수행 중이므로 내용을 표시하고 싶습니다. 따라서 정렬 전후에 표시하는 것이 유용합니다.
나는 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;
}
및 통화 캡처() 물건을 인쇄하기 전에, 다음 릴리스() 인쇄 후. 예, 세마포어와 같은 해킹입니다. 그러나 그것은 효과가 없다, 어떤 생각?
"작동하지 않습니다"라고 말하면, 당신은 personnaly를 의미합니까? 다른 스레드의 출력이 섞여 있다는 뜻입니까? 이게 네가 말하는거야? –
예, 경쟁 조건입니다. – syaz