linux中线程ID与进程ID

这篇博客主要是想通过线程ID和进程ID来说明进程和线程之间的关系,说明比较简单,直接上代码。代码也容易理解。

#include
#include
#include
#include
#include
#include
#include
#define gettid() syscall(_NR_gettid)
using namespace std;
void *print1(void *arg)//一个线程
{
	for(int i = 0; i < 10; ++i)
	{
		cout<<"print1 function!"<

执行结果

linux中线程ID与进程ID_第1张图片

这整个程序中有三个线程:main主线程、print1和print2两个线程,这三个线程构成了同一个进程。通过getpid()分别在三个线程中获取到的进程ID都是25251,说明他们同属于一个进程。但是使用pthread_self()函数分别在三个线程中打印出的线程不一样说明了它们是三个不同的线程。

pthread_self()函数返回一个线程描述符(相当于上一节的文件描述符)。

getpid()函数返回进程描述符(相当于上一节的文件描述符)。

pthread_create函数的返回值仅仅是标示线程创建是否成功,如果返回值为0说明创建成功;如果返回值为非0说明创建失败。

你可能感兴趣的:(多线程)