特性 | pthread_self() | gettid() |
---|---|---|
作用域 | 当前进程内唯一 | 整个系统范围内唯一 |
标准 | POSIX 标准(跨平台) | Linux 特有(非 POSIX) |
用途 | 线程库内部管理(如线程同步、属性操作) | 内核级线程标识(如系统调用、资源管理) |
类型 | pthread_t(可能是结构体或整型) | pid_t(整型) |
获取系统资源 | 无法直接用于系统调用(如 syscall) | 可直接用于系统调用(如 tgkill) |
标识符 | 获取方式 | 作用域 | 用途 | |
---|---|---|---|---|
PID | getpid() | 进程级(所有线程共享) | 标识进程(如 kill(pid, signal) ) |
返回当前进程的 进程 ID(PID),同一进程内的所有线程调用它都会返回相同的值。 |
TID | syscall(SYS_gettid) |
线程级(每个线程独立) | 标识线程(如 tgkill(pid, tid, signal) ) |
返回当前线程的 线程 ID(TID),每个线程(包括主线程)都有自己独立的 TID。 |
gettid()与syscall(SYS_gettid)完全等价
总结
场景 | 使用函数 | 返回的 ID 类型 | 作用域 |
---|---|---|---|
获取进程 ID(所有线程共享) | getpid() | pid_t(PID) | 进程级 |
获取线程 ID(每个线程独立) | gettid() | pid_t(TID) | 线程级(内核) |
POSIX 线程标识(用户态) | pthread_self() | pthread_t | 线程级(用户态) |