[질문] 쓰레드에서 sync 처리는 어떻게 ?
글쓴이: ksil / 작성시간: 월, 2003/01/20 - 11:47오전
안녕하세요.
linux(hardhat)에서 Audio lib를 개발하고 있습니다.
근데 이놈의 CPU랑 Linux에 대한 이해가 깊지 않다보니 문제가 많네요.
일단 가장 시급한것은 Thread에서의 동기화 입니다.
export된 함수들은 그냥 상태만 체크하고 state만 바꾸어 줍니다.
그리고 Thread에서 실제 작업들을 수행하는데...
이놈의 Thread가 가끔 제때에 턴이 안와서 (대략 100m나 200m씩 놓치는 경우가 생기더군요 --; ) 동기화 하는데 문제가 생기네요
예를 들어 Stop명령을 때렸는데 Thread에서 처리할때까지 시간이 걸린다는데 문제 입니다.
이때 다른 명령이 들어 오면 무시하기로 했는데...
처음부터 메세지 큐를 고려 했다면 큐에 명령 떄려 놓고 하나씩 꺼내면서 처리 하겠지만 지금 프로젝트가 중간 이후라서 메세지 큐를 넣는것이 용이 하지 않습니다.
즉 큰 결심과 각오가 아니면 -_____________-;
이에 다른 분들은 Thread작업시 명령의 동기화(?)를 어떻게 처리 하는지 궁금합니다.
Forums:
Signal 과 세마포어를 사용하세요
Signal 과 세마포어를 사용하면 해결 가능할 것 같은데요?
스레드에서도 될지 모르겠어서 fork 로 설명 드리겠습니다.
스레드로 돌아가는 루틴을 fork 로 변경하는 것은 간단 하거든요..
스레드를 생성하는 부분을 fork 로 바꾸시고
사용자 정의 Signal 을 이용해서 메세지를 전달 받으세요.
그리고 공유 자원 사용 시에는 세마포어로 동기화 하구요.
도움이 될랑가 모르겠습니다. 저도 짧은 지식이어서요.
그럼 :shock:
thread에서 동기 맞추기
pthread 쓰신다면 cond 쓰시면 됩니다.
pthread_cond_init
pthread_cond_destroy
pthread_cond_signal
pthread_cond_wait
윈도의
CreateEvent, WaitForSingleObject와 같습니다.
댓글 달기