[질문] 쓰레드 동기를 어떻게 해야 하는지요?
글쓴이: zaru / 작성시간: 화, 2007/02/13 - 4:52오후
// 전역변수 var1; var2; main () { create_thread1(); create_thread2(); while (1) { // 기다리고 있다가.. thread1()과 thread2()에서 var1과 var2에 값이 들어오면 // 두 변수의 값을 읽어 display } } thread1() { while (1) { var1 = 11; // 1초마다 들어가는 값이 다름. sleep(1); } } thread2() { while (1) { var2 = 22; // 1초마다 들어가는 값이 다름. sleep(1); } }
위와 같이 구현 할려면 쓰레드 동기를 뭘로 어떻게 해야 하는지요? 조언 부탁드립니다.
감사합니다.
Forums:
조건변수를 쓰시면
조건변수를 쓰시면 됩니다.
쓰레드 동기화 관련 함수들을 말씀하시는 것인지요?
다음의 쓰레드 동기화 관련 함수들을 말씀하시는 것인지요?
pthread_mutex_init
pthread_mutex_destory
pthread_mutex_lock
pthread_mutex_unlock
pthread_cond_init
pthread_cond_signal
pthread_cond_boradcast
pthread_cond_wait
pthread_cond_timewait
pthread_cond_destroy
감사합니다.
===============================
힘써 면학하되 스스로 흥미를 느끼도록 하여야 하며 늘 익혀야 할 것이다
조건변수로는
조건변수로는 안되용.
코멘트 좀.. ^^;;;
어떤걸 어떤식으로 써야 하는지 코멘트 좀 부탁 드립니다.
===============================
힘써 면학하되 스스로 흥미를 느끼도록 하여야 하며 늘 익혀야 할 것이다
mutex 와 cond 을
mutex 와 cond 을 만듭니다.
쓰레드 내에서 cond 이 바뀌면 signal 을 줍니다.
값 변동을 보는 쪽 쓰레드(main)은 mutex+cond 을 lock 하고 signal 되길 기다립니다.
그럼 값이 바뀔때 마다 출력을 하게 됩니다.
단, cond 을 하나만 주면 두개 쓰레드 중 특정 값만 바뀌면 출력을 합니다. cond을 두개를 만들어 두개값이 모두 바뀌는 경우를 검사할 수 있습니다. 그럼 두개 값이 모두 바뀌는걸 기다리겠지요.
mutex를 lock해서 기다리고, mutex를 cond과 연결시켜 cond 시그날에 mutex의 lock이 해제되는 시점을 얻어 내는 겁니다.
위에 적으신 모든 함수를 다 보십시오. 다 조금씩 관련이 있고 취사 선택혹은 모두 사용해야 할 수 있습니다.
상태에 따른 쓰레드 동기화는 어떻게 활용하냐에 따라 조금씩 사용이 다르고 스펙과 설명을 보고 스스로 익히세요.
그리고, 자식 쓰레드가 1초마다 바뀐다면 제가 질문 드리고 싶은데 굳이 동기화를 왜 하십니까? 그냥 1초마다 갱신하면 되지 않나요? 일정 주기를 선택해서 상태동기화 필요없이 주기적으로 출력하면 복잡하지도 않고 그렇다고 효율성에 문제도 없이 해결될 거 같습니다. (물론, 추가적인 문제가 없다면요..)
조건변수로는
조건변수로는 안된다니? 조건변수가 뭔지 모르시는것 아니신아ㅛ?
조건변수란 뮤텍스와 조건변수가 포함된 동기화 매커니즘을 의미하는 것입니다.
맨 아랫 분이 뮤텍스와 조건 변수에 대한 설명을 잘 해주셨네요.
gdb로 쓰레드 디버깅은 어떻게 하죠?
gdb로 쓰레드 디버깅 할려면 어떻게 하는지요?
감사합니다.
===============================
힘써 면학하되 스스로 흥미를 느끼도록 하여야 하며 늘 익혀야 할 것이다
댓글 달기