一、Linux 获取线程ID
使用syscall获取lwp,也就是top -H中看到的id,但也要注意syscall造成的的开销:
//实例1
#include <iostream>
#include <unistd.h>
#include <sys/syscall.h>
using namespace std;
int main()
{
int tid = syscall(SYS_gettid);
cout << tid <<endl;
return 0;
}
//实例2
#include <stdio.h>
#include <sys/syscall.h> //Linux system call for thread id
#include <assert.h>
#include <pthread.h>
void *subThread()
{
int i;
printf("child thread lwpid = %u\n", syscall(SYS_gettid));
printf("child thread tid = %u\n", pthread_self());
scanf("%d", i);//code dump
}
int main()
{
pthread_t tid;
int rc;
printf("main thread lwpid = %u\n", syscall(SYS_gettid));
printf("main thread tid = %u\n", pthread_self());
rc = pthread_create(&ti