일단 <thread> 즉, C++ 표준 쓰레드 라이브러리를 기준으로 할 때,
thread 객체가 살아있는 한 그 객체가 담고 있는 쓰레드는 계속 기동함
대다수의 경우 main 이 끝나면 모든 thread 객체들의 소멸자가 불려지기 때문에(main이 최상위 소유자인 경우가 많으니까)
쓰레드 들이 끝나는걸로 해석하는 것 같은데,
thread.detach() 를 하면 쓰레드 객체의 존재 여부와 상관 없이 쓰레드 끝까지 작동해야 꺼지기 때문에,
main() 종료 후에도 쓰레드는 계속 작동한다는 것 같음 (확인은 안 해봄)
http://stackoverflow.com/questions/19744250/what-happens-to-a-detached-thread-when-main-exits
근데 게시물에서도 확실히 아는 사람은 없는 것 같고,
심지어 undefined behavior 라고 하는 사람까지 있는듯
근데 아까 ㅇㅇ 이 올린 링크상으로는, 순수한 win32 구현 하에서는 main 과 관계없이 쓰레드는 계속 살아있는거라고 함
애매한 구석이 있구만
오호 신기하네 개추
디태취!
C# 모노에서는 스레드 디테치 하면 살아있는거 본거같음.. 그것땜에 유니티 박살낼뻔
근데 win32에서 디태치 했다고 스레드 살아있는건 못봄. 디버그로 빌드해서 그런가?
ㄴ win32 쓰레드 라이브러리를 쓴거? POSIX가 아니라? - return 0;