pthread_detach()에 대해..

살자의 이미지

pthread_detach()가 어떤 작업을 수행 하는지 이해가 되지 않습니다.
책에서는 연대가능하다는 말이 나오는데 무슨 뜻인지 모르겠습니다.
pthread_detach()어떤 작업을 하는지 알려주세요..
그럼 수고하세요..^^

june8th의 이미지

thread가 끝나면, pthread_join을 통해서, thread가 차지하고 있던
resource를 반환하도록 하고, 종료 return 값을 받을수가 있습니다.

pthread_detach 한다는 것은, 그 결과 값에 관심이 없으므로,
thread가 끝나면 알아서 리소스 반환하도록 한다는 것이되겠지요.

thread를 detach하는 다른 방법으로는, create할때
PTHREAD_CREATE_DETACHED attribute를 세팅할 수도 있는데,
library가 지원하는 posix표준 정도에 따라 가능하지 않은 경우도 있습니다.

근데, 연대가능하다라는 말이 어느책에 나오나요? :-)

xjiwoox의 이미지

스레드는 연대 가능하거나(기본 설정) 분리 가능하다.

Unix Network Programmin vol.1(networking API: socket and XTI)

김치하 역... --;

.지우.

s(˘∼˘*)z,·´″"`°³о$ √(´∀`√)... (˘ヘ˘ㆀ)a

sunyzero의 이미지

연대라는 말은 join을 말하는 것이고 분리는 그대로 detach를 말하는 것입니다.

detach된 상태는 해당 함수(쓰레드)가 종료하면 바로 종료하게 됩니다. 물론 자원도 반환되죠.

join된 쓰레드는 pthread_join이 호출로 깨끗하게 반환할 수있습니다.

========================================
* The truth will set you free.

살자의 이미지

그럼
join을 쓰면 detch를 쓰지 않아도 되는건가여?

저는 무한 루프를 돌면서 accpet하는 클라이언트마다 thread를 생성하는 루틴을 만들었는데여..
join을 사용하지 않으면 잘되지 않더라구여...
어떻게 안되냐면 pthread_create함수를 거치지 않고 무한루프만 계속돕니다. 접속한 클라인언트 ip와 port를 출력 해보면 같은 포트의 클라이언트가 많이 나옵니다. 클라이언트는 같은 시스템에서 실행 하구여....
하지만 join을 사용하면 잘됩니다...
설명이 정리가 안되는점 이해해 주세요...
질문의 요지는 join을 쓰면 detch를 쓰지 않아도 되는건가여?
또 join을 사용하지 않으면 나타나는 문제 입니다......

 
while(1)
{
       clientfd=accept(servfd,(struct sockaddr * &cliaddr,&client_len);

       if(pthread_create(&p_thread , NULL , thread_client_comm , (void *)th_data) == -1)
                    print_err("==>> Accept thread Create error");

        //pthread_join(p_thread,NULL);
}
june8th의 이미지

join을 쓰면 detach 쓰지 않아도 됩니다..

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.