스레드 (C posix 스레드)를 죽이는 것에 대해 검색하고 읽었습니다. 모든 스레드는 스레드가 작업을하고 돌아와야하기 때문에 좋은 생각이 아니라고 말합니다. 그러나 내 문제는 다음입니다.스레드가 살아 있는지 확인하고 죽일 수 있습니까?
recvfrom 함수를 사용하여 로컬 네트워크에서 메시지를 수신하고 있지만이 함수는 내 프로그램을 "차단"합니다. 재시작을하지 않으면 함수가 잠길 때까지 영원히 잠긴 상태로 유지됩니다.
이 문제를 방지하려면 스레드를 사용한다고 생각 했으므로 주 스레드가 "카운팅"하는 동안 두 번째 스레드는 메시지를 암시하려고합니다. 결정된 시간 (즉, 1 초)에 내 두 번째 스레드가 여전히 메시지를 기다리고 있습니다 (recvfrom 함수에서 잠겨 있습니다). "죽여야"하고 다시 시작할 다른 스레드를 만들어야합니다. 다른 IP). 이것은 항상 내 스레드가 작업을 끝내지 않고 영원히 기다릴 수 없다는 것을 의미합니다 ...
지금까지 내가 할 수있는 일은 많은 스레드를 만들고 관심있는 IP의 메시지를 받아들입니다.),하지만 난 아무것도 recived 결코 스레드를 죽일 줄 몰라 ...
누군가가 스레드를 죽이는 방법을 알고 있습니까? 아니면 내 주요 프로그램이 돌아 오면 자동으로 사망합니까?
는 (코드 샘플은 C#으로입니다)하지만
[비 차단 소켓] (https://www.google.com/search?q=non+blocking+sockets)을 검색하십시오. –
보다 구체적으로, timeout을 사용하여 select()를 호출하십시오. 그것은 당신의 프로그램이 무엇을하는지 알게하는데 도움을 줄 것입니다. 특히 다른 IP를 왜 병렬로 쓰지 않고 왜 다른 IP를 시도 하는지요. –