parent thread가 종료될때 child thread 의 운명은?

dingdong77의 이미지

프로세스의 main thread가 아닌 parent thread가 종료했을때 child thread들은 자동으로 종료되는건가요?

즉, thread A가 B를 생성하고 B가 C를 생성했을때

A가 종료하면 프로세스의 main()이 리턴하는 격이므로 모든 스레드가 같이 종료되겠지만,
B가 종료했을때 C는 무사한지가 궁금합니다.

간단한 상황인데 너무 어렵게 설명한 느낌이... :?

ajoupark의 이미지

thread를 생성하면 parent/child 의 개념이 없는 것으로 알고 있습니다. thread 를 생성하면 전부 peer 의 개념이므로 별 상관이 없을 듯 하네요. 그래서 join 을 써서 종료 시점을 알아낼 수 있습니다.

/** 주워 들은 것도 내 것이다. 많이 주워 들어야지*/

shkwon81의 이미지

POSIX 쓰레드에서는 parent thread, child thread의 관계가 존재하지 않습니다.

예를 들어, main thread(또는 initial thread)가 쓰레드 A를 생성했다고 해서 쓰레드 A가 main thread의 자식 쓰레드라고 말하지는 않습니다.

단, 한 가지 제약을 두고 있는데, 그 제약이란
"초기 쓰레드(main)가 리턴하는 경우는 프로세스 전체를 종료시킨다"는 것입니다.

따라서, 초기 쓰레드만 종료하고자 하는 경우라면 pthread_exit() 를 사용하셔야 합니다

stoneshim의 이미지

네. ajoupark 님 말씀대로 구별되지 않습니다. 첨언하면

thread에서 pthread_exit 호출로 종료하는 경우에 해당 thread만 종료합니다.
thread에서 exit 호출을 하게되면 동일 process의 모든 thread가 종료합니다.

main thread(편의상 이렇게 표현하겠습니다)의 main함수 내부에서 return하게되면 결국 exit이 호출되므로 동일 process내의 모든 thread가 종료하게 됩니다.

우리 모두 리얼리스트가 되자. 그러나 가슴에 이룰 수 없는 꿈을 가지자

Dr_stein의 이미지

결국, 임의의 쓰레드가 다른 쓰레드의 종료시점을 알아야 한다면 메인쓰레드가
pthread_join()으로 다른 쓰레드의 종료상황을 조율 해줘야 할테고, 그렇지 않다면, 메인쓰레드도 어떠한 루틴을 타고 pthread_exit()각각 종료하게 되겠죠.

앞마당 먹고 시작한 저그의 8할은 뮤탈 테크를 먼저 탄다. 하지만 나머지 2할때문에 항상 스켄이 모자란다. - _-;

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.