2010-04-28 7 views
0

스레드 된 소프트웨어에 이상한 문제가 있습니다.스레드 응용 프로그램이 다른 응용 프로그램과 잠들었습니다.

소프트웨어 인스턴스를 2 개 시작합니다. 각 인스턴스에는 2 개의 스레드가 있으며, 하나의 스레드는 사용할 소켓을 만들고 다른 스레드는 통신을 위해 소켓을 사용합니다.

한 인스턴스의 스레드 중 하나가 sleep(3)을 호출하면 다른 인스턴스의 다른 스레드도 역시 잠자기 상태가됩니다. 가장 이상한 점은 컴퓨터를 재부팅 할 때 처음 작동한다는 것입니다. 그러나 두 번째 시도 후에는 설명대로 잠을 자게됩니다.

어떻게 가능합니까? 공유 리소스를 사용하고 있습니까?

+0

잠시 동안 질문 제목에 "다른"응용 프로그램을 사용하여 잠 들어있는 스레드 응용 프로그램에 대해 묻는 것으로 생각됩니다 .-p – Pharaun

답변

2

수면은 내 스레드가 아닌 프로세스을 일시 중단합니다. 자세한 내용은 sleep vs pthead_yield을 참조하십시오.

+0

그렇더라도 다른 프로세스로 인해 다른 인스턴스를 잠자 게되는 이유는 무엇입니까? – DeeD

+0

아, 죄송합니다. 질문을 잘못 읽었습니다. 자세한 내용을 제공해야합니다. SSCCE (http://sscce.org)가 바람직합니다. –

-1

수면 기능을 예방 차원에서 포장 해 보았습니까?

관련 문제