멀티스레딩 관련 질문 있습니다.
그냥 멀티스레드 공부하려고 코딩중에 문제에 봉착했습니다.
3개의 멀티스레드로 전역변수로 선언된 num을 1부터 100까지 오픈한 파일에 write하려고 하는데요.
compare & swap 기법으로 임계영역은 서로 잘 피해서 들어가는데,
Thread is 2 and num is 94
Thread is 3 and num is 95
Thread is 1 and num is 96
Thread is 2 and num is 97
Thread is 3 and num is 98
Thread is 1 and num is 99
Thread is 2 and num is 100
문제는
파일을 쓸 때 차례대로 write하는 것이 아니구 스레드가 끝나기 전에 저장했다가 한꺼번에 써버리네요.
1 5 7 9 12 15 18 21 23 26 29 32 35 38 41 44 48 51 54 56 59 62 64 67 69 71 73 75 78 81 85 88 90 92 95 98 3 6 8 11 14 17 20 24 27 30 33 36 40 43 45 47 50 53 57 60 63 66 70 74 77 79 82 84 86 89 93 96 99 2 4 10 13 16 19 22 25 28 31 34 37 39 42 46 49 52 55 58 61 65 68 72 76 80 83 87 91 94 97 100
제가 원하는 것은 1, 2, 3 ... ,100까지 인데요.
인터넷에 찾아보니까 write가 버퍼에 저장 해 놨다가 한꺼번에 write한다고 하는 것 같던데 그게 맞는 건지
해결방법이 어떻게 되는 지 궁금합니다.
답변 미리 감사합니다. 꾸벅 (_ _)
fflush(stdout); /* force it
댓글 달기