| [ CnUnix ] in KIDS 글 쓴 이(By): terzeron (microkid) 날 짜 (Date): 2002년 5월 17일 금요일 오후 11시 59분 36초 제 목(Title): Re: [q]pthread안에서 fork에서 deadlock발 alita님께서 인용하신 man page에도 비슷한 내용이 나오는데, 굳이 mutex lock을 걸었다 풀었다 할 필요는 없을 것 같고 두번째 방법을 응용해서 pthread_atfork를 fork앞에 사용하고 mutex를 안 쓰신다니 mutex관련 작업을 아예 하지 않는 것도 통할 듯 싶습니다. 다만 mutex를 쓰셔야 한다면 첫번째 핸들러 prepare에서 잠깐 걸었다가 atfork이후에 parent하고 child에서 풀어주는 과정을 피할 수가 없겠네요. 아니면 두번째 방법처럼 atfork 이후로 동기화작업을 미뤄놓으시던가요. deadlock이 걸리는 원인은 혹시 fork(/exec도?)를 두 쓰레드가 동시에 수행해서 그런 건 아닙니까? PS 저도 semaphore가 deadlock이 걸리는데 이거 참 환장할 노릇입니다. 걸릴 곳이 없어서 말이죠. 게다가 매번 걸리는 게 아니고 cgi로 수행되는 daemon이라서 trace를 할 수도 없고 말이죠. -_-;; --- 어떤 성취가, 어떤 조롱이, 또는 어떤 고뇌가 나를 기다리고 있을지 나는 모른다. 나는 아무 것도 모른다. 그러나 나는 아직 과거의 경이로운 기적의 시대가 영원히 과거의 것이 되어 버리지는 않았다는 사실을 굳게 믿고 있다. - Stanislaw Lem - |