当前位置:   article > 正文

Linux中的线程创建函数pthread_create函数_linux pthread_create

linux pthread_create

Linux系统中的多线程遵循POSIX线程接口,成为pthread。pthread_create函数用来创建一个用户线程,函数原型如下。

#include <pthread.h>

int pthread_create(pthread_t *restrict tidp,
                   const pthread_attr_t *restrict attr,
                   void *(*start_rtn)(void), 
                   void *restrict arg);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

参数含义:
1)tidp参数表示指向线程标识符的指针。
2)attr参数用来设置线程属性,如果没有则填NULL。
3)start_rtn参数表示线程运行函数的地址。
4)arg参数表示线程运行函数的参数,如果没有参数则填NULL。

返回值:成功返回0,失败返回错误代码。

下面我们举个简单的例子,创建一个线程,主线程向新创建的线程传递一个参数,新线程中将参数打印,结束。

程序代码thread.c如下。

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>

void *thread_func(void *arg)
{
	printf("arg = %d.\n", *((int *)arg));
	return NULL;
}

int main()
{
	int rc = 0;
	pthread_t tid;
	int arg = 233;
	printf("main thread.\n");
	rc = pthread_create(&tid, NULL, thread_func, &arg);
	if (rc)
		printf("ioctl: %s\n", strerror(errno));
	sleep(1);
	return rc;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

这里需要注意一下,pthread_create调用后不能立刻return,这样线程创建和打印就会来不及运行就会结束主进程,所以要调用sleep函数让进程延迟一秒再结束。

编译该代码。含有线程的程序编译时需要调用静态链接库pthread,但pthread不是Linux系统的默认库,因此编译时需要加上-lpthread参数。

gcc thread.c -o thread -lpthread
  • 1

运行结果如下。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/181970
推荐阅读
相关标签
  

闽ICP备14008679号