pthread_create и PID (непонятки)

Модератор: Модераторы разделов

Bokrenok
Сообщения: 4
ОС: WinXP vs Linux

pthread_create и PID

Сообщение Bokrenok »

Всем привет!

Вопрос по PID для потока, созданного через pthread_create.

Ситуация такая:
- есть 2 девайса на основе процессора PPC440GRx
- на каждом девайсе крутится немного разная сборка Linux'a 2.6.21-rc4. (точных различий в сборках к сожалению не знаю)

И вот заметил я недавно странную вещь:
при запуске проги на одном из девайсов каждый поток, созданный посредством pthread_create получает собственный PID,
а на другом девайсе при запуске той же проги потоки имеют один единственный PID на всех.
Значение PID вытаскиваю с помощью getpid().


Собсно вопрос: каким образом регулируется назначение PID'ов потокам?

первый девайс:

Код: Выделить всё

 17:20:20.538  [INFO]  main task. pid: 205
 17:20:20.539  [INFO]  consol task: start. pid 207
 17:20:20.540  [INFO]  consol task_wr: start. pid 208
 17:20:20.540  [INFO]  conn task: start. pid 209
 17:20:20.540  [INFO]  timer task: start. pid 210


второй девайс:

Код: Выделить всё

 16:55:42.246  [INFO]  main task. pid: 225
 16:55:42.246  [INFO]  consol task: start. pid 225
 16:55:42.247  [INFO]  consol task_wr: start. pid 225
 16:55:42.248  [INFO]  conn task: start. pid 225
 16:55:42.248  [INFO]  timer task: start. pid 225
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: pthread_create и PID

Сообщение RasenHerz »

Вот чтобы подобных проблем не было и придумали gettid().
Спасибо сказали:
Bokrenok
Сообщения: 4
ОС: WinXP vs Linux

Re: pthread_create и PID

Сообщение Bokrenok »

RasenHerz писал(а):
24.12.2009 13:33
Вот чтобы подобных проблем не было и придумали gettid().


к сожалению не выход, в моем случае. компилятор не знает ничего про gettid() :(
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: pthread_create и PID

Сообщение RasenHerz »

pthread_t tid = pthread_self(); ?
Спасибо сказали:
Bokrenok
Сообщения: 4
ОС: WinXP vs Linux

Re: pthread_create и PID

Сообщение Bokrenok »

RasenHerz писал(а):
24.12.2009 13:50
pthread_t tid = pthread_self(); ?


ага. подойдет. спасиб.

а причина ситуевины крылась в разных libc на девайсах (разная реализация thread'ов)

linuxthreads в одном случае и NPTL (Native POSIX Threads Library) в другом.


первый девайс (разные PID)
-------------------------------------------------------------------
GNU C Library stable release version 2.3.5, by Roland McGrath et al.
Copyright © 2005 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.0.0 (DENX ELDK 4.0 4.0.0).
Compiled on a Linux 2.6.15 system on 2006-01-11.
Available extensions:
GNU libio by Per Bothner
crypt add-on version 2.1 by Michael Glad and others
linuxthreads-0.10 by Xavier Leroy
BIND-8.2.3-T5B
libthread_db work sponsored by Alpha Processor Inc
NIS(YP)/NIS+ NSS modules 0.19 by Thorsten Kukuk
software FPU emulation by Richard Henderson, Jakub Jelinek and others
Thread-local storage support included.
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.
-------------------------------------------------------------------


второй девайс (одинаковые PID)

-------------------------------------------------------------------
GNU C Library stable release version 2.7, by Roland McGrath et al.
Copyright © 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.3.2.
Compiled on a Linux >>2.6.18-6-powerpc-smp<< system on 2009-01-04.
Available extensions:
crypt add-on version 2.1 by Michael Glad and others
GNU Libidn by Simon Josefsson
Native POSIX Threads Library by Ulrich Drepper et al
BIND-8.2.3-T5B
For bug reporting instructions, please see:
<http://www.gnu.org/software/libc/bugs.html>.
-------------------------------------------------------------------
Спасибо сказали: