基于linux操作系统的线程封装(可实现任意传递任意类型任意个数的参数)

一. pthread库提供的接口函数

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg); //创建一个线程
int pthread_join(pthread_t thread, void **retval);//线程等待
int pthread_detach(pthread_t thread);//线程分离

        其中,pthread_create为创建线程,pthread_t *thread 是一个输入输出参数,当成功创建线程后,thread为线程的tid,atrr为线程属性,一般设置为NULL,start_routine为函数指针,其传参类型为void*,arg 为待传入参数。

        当主线程程序执行完后,主线程的退出会导致整个进程退出,因此会发生其他线程未执行完任务也随着主线程退出而退出,因此可以用pthread_join和pthread_detach实现线程等待或线程分离,其中retval为输入输出参数,可以记录线程执行完后的返回值

        注意到线程创建的回调函数类型必须是void*(void*) 因此,如果我们想传多个参数时必须先定义结构体再传结构体的指针,这在书写代码时造成了一定的不便,例如如果我们希望传输一个学生(id,姓名,班级)等信息传给所创造的线程只能用如下方式:

#include<iostream>
#include<string>
#include<pthread.h>
struct st
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值