在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

09-12 18:55