주 스레드가 종료 된 후에도 계속 실행되는 스레드가있는 문제를 디버깅하고 있습니다. 그것은 다른 스레드가 변수를 변경하기를 기다리는 루프에서 멈춰 있습니다.주 스레드가 완료되면 어떤 조건에서 C++ 프로그램이 계속됩니까?
주 스레드가 종료 된 후 프로세스가 계속 실행되는 상황을 이해하려고합니다. 나는 32 비트 리눅스를 사용하고 g ++ 의 pthreads
주 스레드가 종료 된 후에도 계속 실행되는 스레드가있는 문제를 디버깅하고 있습니다. 그것은 다른 스레드가 변수를 변경하기를 기다리는 루프에서 멈춰 있습니다.주 스레드가 완료되면 어떤 조건에서 C++ 프로그램이 계속됩니까?
주 스레드가 종료 된 후 프로세스가 계속 실행되는 상황을 이해하려고합니다. 나는 32 비트 리눅스를 사용하고 g ++ 의 pthreads
pthread_exit()를 사용하여 main() 함수를 종료하면 다른 스레드가 완료되면 프로세스가 종료됩니다. 어떤면에서는 이상이 아닙니다.
에만 프로세스가 좀비가 될 수 있기 때문에 정말 wird 동작입니다. 스레드는 주 프로그램 스레드 범위의 메모리에 배치됩니다. 주 스레드가 완료되면 분리 된 스레드까지도 시스템에 의해 간단히 종료됩니다. 코드를 게시 할 수 있습니까?
이것은 C++ 관련 질문이 아닙니다. 프로세스가 종료() 시스템 호출을 호출 할 때 메인 서브 루틴에서 반환에 암시 적으로 종료 할 준비가하거나 그는 pthreads 정보와
내가 당신이 볼 수있는 행동이 이상 말하고 싶지만, 읽어 보시기 가졌어요. 나는 창문에서 비슷한 것을 보았다. 나는 사양에 따라 그것을 믿지 않는다. 오히려 OS, 런타임 라이브러리 등의 버그입니다.일반적으로 리눅스 프로세스 mangement에 대해, 프로세스 파괴는 명시 적, 발생 프로그램 (즉, C 컴파일러 )은 main() 이 반환 된 후 exit()를 호출합니다. http://www.informit.com/articles/article.aspx?p=370047&seqNum=4
추가 상황이 발생할 수 있습니까? – Juan
다른 상황이 발생할 수 있습니다. 그러나 스레드 중 하나에서 exit()를 호출하면 main() 함수에서 return/exit()를 호출 한 것처럼 전체 프로세스가 종료됩니다. – zacsek
주 스레드가'pthread_cancel()'으로 취소 된 경우도 있습니다. 이것은 한 스레드 만 취소합니다. 다른 사람들은 계속해서 달릴 것입니다. – mark4o