在Pthreads手册页中,提到了
调用getpid(2)在每个线程中返回不同的值
在LinuxThreads部分中。
我创建了两个线程,并在其中打印了PID。但是,两者的PID都是相同的。
int main () { //pid_t pid; pthread_t tid[2]; { printf("In main, PID : %d, PPID : %d\n", getpid(), getppid()); pthread_create(&(tid[0]), NULL, &(f),NULL); pthread_create(&(tid[1]), NULL, &(g),NULL); pthread_join(tid[0], NULL); pthread_join(tid[1], NULL); } return 0; } void *g() { printf("My PID in G : %d, PPID : %d\n", getpid(), getppid()); } void* f() { printf("My PID in F : %d, PPID : %d\n", getpid(), getppid()); }
以下是我得到的输出,
总的来说,PID:5219,PPID:5214
我的PID在F中:5219,PPID:5214
我的PID在G中:5219,PPID:5214
我需要知道我是否在这里误解了什么。
提及解释说:
LinuxThreads实现以多种方式偏离POSIX.1规范,包括以下几种:
调用getpid(2)在每个线程中返回不同的值。
但是您很有可能POSIX Threads
不使用The LinuxThreads
。在POSIX中,线程属于一个进程,每个线程都具有PID
。