Есть два значения потока, которые запутываются. pthread_self () вернет идентификатор потока POSIX; gettid () вернет идентификатор потока ОС. Последний характерен для Linux и не обязательно будет переносимым, но, вероятно, то, что вы действительно ищете.
РЕДАКТИРОВАНИЕ Как отмечает PlasmaHH, gettid()
вызывается через syscall()
. Со справочной страницы syscall()
:
#define _GNU_SOURCE
#include <unistd.h>
#include <sys/syscall.h>
#include <sys/types.h>
int
main(int argc, char *argv[])
{
pid_t tid;
tid = syscall(SYS_gettid);
}