miwaiwai

导航

线程id

syscall(SYS_gettid)和pthread_self()获取的线程id不一样

syscall(SYS_gettid):在linux下这个和ps -eLf查出来的结果是一致的

  1. gettid()是linux内核实现的函数,在内核看来任何线程也是一个轻量级进程,从下面内核实现的sys_gettid看来,gettid()返回的是内核管理的轻量级进程的进程id。
  2. pthread_self 得到实际上是线程描述符pthread 指针地址。
  3. gettid()是内核给线程(轻量级进程)分配的进程id,全局(所有进程中)唯一;pthread_self()是在用户态实现的,获取的id实际上是主线程分配给子线程的线程描述符的地址而已,只是在当前进程空间中是唯一的。

 

posted on 2023-02-24 20:50  米歪歪  阅读(21)  评论(0编辑  收藏  举报