zoukankan      html  css  js  c++  java
  • Linux下线程pid和tid

    include <stdio.h>

    include <pthread.h>

    include <sys/types.h>

    include <sys/syscall.h>

    struct message
    {
    int i;
    int j;
    };

    void *hello(struct message *str)
    {
    printf("child, the tid=%lu, pid=%d ",pthread_self(),syscall(SYS_gettid));
    printf("the arg.i is %d, arg.j is %d ",str->i,str->j);
    printf("child, getpid()=%d ",getpid());
    while(1);
    }

    int main(int argc, char *argv[])
    {
    struct message test;
    pthread_t thread_id;
    test.i=10;
    test.j=20;
    pthread_create(&thread_id,NULL,hello,&test);
    printf("parent, the tid=%lu, pid=%d ",pthread_self(),syscall(SYS_gettid));
    printf("parent, getpid()=%d ",getpid());
    pthread_join(thread_id,NULL);
    return 0;
    }
    复制代码

    getpid()得到的是进程的pid,在内核中,每个线程都有自己的PID,要得到线程的PID,必须用syscall(SYS_gettid);

    pthread_self函数获取的是线程ID,线程ID在某进程中是唯一的,在不同的进程中创建的线程可能出现ID值相同的情况。

    复制代码

    include <stdio.h>

    include <pthread.h>

    include <stdlib.h>

    include <unistd.h>

    include <sys/syscall.h>

    void *thread_one()
    {
    printf("thread_one:int %d main process, the tid=%lu,pid=%ld ",getpid(),pthread_self(),syscall(SYS_gettid));
    }

    void *thread_two()
    {
    printf("thread two:int %d main process, the tid=%lu,pid=%ld ",getpid(),pthread_self(),syscall(SYS_gettid));
    }

    int main(int argc, char *argv[])
    {
    pid_t pid;
    pthread_t tid_one,tid_two;
    if((pid=fork())-1)
    {
    perror("fork");
    exit(EXIT_FAILURE);
    }
    else if(pid
    0)
    {
    pthread_create(&tid_one,NULL,(void *)thread_one,NULL);
    pthread_join(tid_one,NULL);
    }
    else
    {
    pthread_create(&tid_two,NULL,(void *)thread_two,NULL);
    pthread_join(tid_two,NULL);
    }
    wait(NULL);
    return 0;
    }
    复制代码

  • 相关阅读:
    SPRINGMVC整合SOLR
    solr 嵌套entity 高亮查询
    solr 高级进阶,解决问题
    Solr的主从模式Master-Slave
    Solr8.0速成系列 | Solr客户端常用操作和查询语法 08
    solr 的全量更新与增量更新
    solr8.0.0和tomcat8.5.40的整合,完整版
    设置 Tomcat 的JVM运行内存
    mongo主库地址变更,从库修改数据源IP
    mysql数据表如何导入MSSQL中
  • 原文地址:https://www.cnblogs.com/lidabo/p/14713741.html
Copyright © 2011-2022 走看看