pthread 를 이용해 쓰레드를 만들었습니다만 pid 값에 대한 의문

i_wish_awk_sed_perl의 이미지

pthread 를 이용해 5개의 쓰레드를 만들어서 간단한 테스트를 하고 있습니다만 쓰레드라고 하면 fork 를 해서 사용하는것과는 달리 하나의 프로세스 안에서 여러개의 쓰레드가 생성되어야 하는것이 아닌지요?

하지만 실제 코드를 짜고 실행해 보니 여러개의 프로세스가 실행됩니다.

게시판에서 잠깐 본 글로는 리눅스 2.4 대까지는 vfork() 를 이용해서 이렇고 2.6 대에서는 진정한 쓰레드(?)가 지원이 된다고 하는데...더 자세한 이야기를 부탁 드립니다!

jinyeong의 이미지

vfork이 아니라 clone이라고 알고 있습니다.

thread가 맞긴 합니다만, pid를 공유하지 않는 상태인 것이지요..

linux thread 구현시, clone 에 CLONE_PID flag가 제대로 구현되어 있지

않았기 때문에 다른 pid를 가질 수 밖에 없었다고 생각합니다만..;;

그외에도 signal 등 posix를 제대로 따르지 않는 경우가 몇몇 있습니다.

2.5 대 이상의 커널로 최신 glibc version을 사용하신다면,

NPTL의 사용으로 getpid시.. 동일한 pid를 가지시는 것을 볼 수 있습니다.

Quote:

smileman@tachikoma:~/tmp$ ./getpid
thread 0 pid: 28875
thread 1 pid: 28875
thread 2 pid: 28875
thread 3 pid: 28875
thread 4 pid: 28875
thread 5 pid: 28875
thread 6 pid: 28875
thread 7 pid: 28875
thread 8 pid: 28875
thread 9 pid: 28875
main thread pid: 28875

I thought what I'd do was,
I'd pretend I was one of those deaf-mutes.. or should I?

i_wish_awk_sed_perl의 이미지

음... vfork 가 아니였군요. 그렇다면 ps -ef 등의 명령으로 확인해 볼때 단지 프로세스가 여러개 뜬것 처럼 나오지만 이것이 제대로(?) 쓰레드의 역활은 하고 있다고 생각하고 넘어가면 될까요?

그리고 man -k pthread 등으로 검색을 해 보아도 pthread 에 관련된 man 페이지는 없는거 같습니다. 뭐 다른 랭귀지쪽에는 있는거 같지만 c 쪽으로는 없네요. 혹시 다른 man 페이지를 설치해 줘야 하는게 있는지요?

[root@vessel root]# dpkg -l | grep manpages
ii  manpages       1.39-1.1       Man pages about using a Linux system.
ii  manpages-dev   1.39-1.1       Linux-development man pages.
ii  manpages-ko    20010321-1     Korean version of the manual pages.
[root@vessel root]# 

언제쯤 정규표현식을 정복할 수 있을까? ㅡㅡ;

댓글 달기

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