[Mult-CPU, Multi-Thread] 환경에서 debug 출력이 뒤섞이는 문제 도움 부탁드립니다.
글쓴이: ariyan / 작성시간: 목, 2005/12/22 - 4:40오후
감사합니다.
각종 키워드로 검색해도 적절한 답을 구할 수 없어 글 올립니다.
"Multi-CPU (2개), Multi-Thread"로 구동되는 프로그램이 있는데요..
부하를 가하면 가할 수록 , 각 Thread 에서 수행되는 cout , printf 에 의한 출력이 서로 뒤섞여 각종 로그를 확인할 수 없는 상황에 처했습니다..
Thread1 "1234567890"
Thread2 "abcdefghihkl"
Thread 2개를 각각 100msec sleep후 위의 문자열을 출력하도록 하였더니,,
12a3bcd45~~
등으로 섞여 출력되는 경우가 많습니다..
적어도 하나의 단위로 된 문자열 출력에서 제어를 뺐기지 않게하는 옵션이나 방법있을까요?
읽어주셔서 감사합니다.
Forums:
flockfile(3), ftrylockfile(3), funlockfi
flockfile(3), ftrylockfile(3), funlockfile(3)을 써 보기 바랍니다.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
syslog(3) 을 추천합니다.
syslog(3) 을 추천합니다.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
[일단 flockfile(stdout);cout<<
[일단
flockfile(stdout);
cout<<....;
funlockfile(stdout);
하여 출력시 stdout 을 lock하여 사용할때,
출력이 atomic하게 나오는건 확인했습니다..
다만, 성능에 문제가 없는지가 좀 걱정되어 확인해볼려고합니다.
도움주셔서 감사합니다..
저의 경우, 개발한 서버내에 syslog와 유사하게 하나의 로깅 프로세스
저의 경우, 개발한 서버내에 syslog와 유사하게 하나의 로깅 프로세스/쓰레드를 두고, 이 프로세스/쓰레드가 받아서 출력하게 하는것으로 구현했습니다.
댓글 달기