linux c之使用pthread_create创建线程pthread_join等待线程和pthread_exit终止线程总结

本文详细介绍了Linux环境下使用pthread_create创建线程、pthread_join等待线程结束以及pthread_exit终止线程的基本原理和函数用法。通过示例代码展示了如何创建两个线程打印数据,并讨论了不使用pthread_join时可能遇到的问题。
摘要由CSDN通过智能技术生成

1、介绍API

1、pthread_create函数


函数简介
pthread_create是UNIX环境创建线程函数
头文件

#include<pthread.h>


函数声明

 

int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg);

 


返回值
若成功则返回0,否则返回出错编号
参数
第一个参数为指向线程标识符的指针,第二个参数用来设置线程属性,第三个参数是线程运行函数的起始地址, 最后一个参数是运行函数的参数。
另外在编译时注意加上-lpthread参数,以调用静态链接库。因为pthread并非Linux系统的默认库

 

 

2、pthread_join函数


函数简介
函数pthread_join用来等待一个线程的结束。
函数原型为:

extern int pthread_join __P (pthread_t __th, void **__thread_return);

 



参数:
第一个参数为被等待的线程标识符,第二个参数为一个用户定义的指针,它可以用来存储被等待线程的返回值

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
pthread_create是一个函数,用于创建一个新的线程。它的原型如下: ```c int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); ``` 其中,`thread`是一个指向pthread_t类型的指针,用于存储新线程的标识符;`attr`是一个指向pthread_attr_t类型的指针,用于设置线程的属性;`start_routine`是一个指向函数的指针,该函数将作为新线程的入口点;`arg`是传递给`start_routine`函数的参数。 在创建线程后,可以使用全局变量来在主线程和新线程之间进行通信。全局变量是在所有线程中都可见的变量,因此可以在不同的线程中读取和修改它们的值。 下面是一个示例代码,演示了如何使用pthread_create创建线程使用全局变量: ```c #include <stdio.h> #include <pthread.h> int global_var = 0; // 全局变量 void* thread_func(void* arg) { global_var = 10; // 在新线程中修改全局变量的值 printf("New thread: global_var = %d\n", global_var); pthread_exit(NULL); } int main() { pthread_t thread; pthread_create(&thread, NULL, thread_func, NULL); // 创建线程 global_var = 5; // 在主线程中修改全局变量的值 printf("Main thread: global_var = %d\n", global_var); pthread_join(thread, NULL); // 等待线程结束 return 0; } ``` 在上面的示例中,我们创建了一个全局变量`global_var`,然后在主线程和新线程中分别修改它的值。在主线程中,我们将`global_var`设置为5,在新线程中,我们将其设置为10。最后,我们使用`pthread_join`函数等待线程结束。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码莎拉蒂 .

你的鼓励是我最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值