线程函数用法

===========================进程和线程的区别==============================
线程和进程在使用上各有优缺点:
			线程执行开销小,但不利于资源的管理和保护,而进程正相反。
			每个进程都拥有自己的数据段、代码段和堆栈段,这就造成进程在进行创建、切换、撤销操作时,需要较大的系统开销。
			为了减少系统开销,从进程中演化出了线程。为了让进程完成一定的工作,进程必须至少包含一个线程。
			线程存在于进程中,共享进程的资源
!!!!编译时一定要在编译命令后面加上-pthread!!!!
====================================================================

pthread_create函数
int pthread_create(pthread_t *thread,const pthread_attr_t *attr,void *(*start_routine) (void *), void *arg);
参数		thread:线程ID号
			attr          :线程属性结构体地址,通常设置为 NULL
			start_routine :函数指针,线程函数的入口地址
			arg           :传给线程函数的参数
返回		成功			--->0
			失败			--->错误码

pthread_t pthread_self(void);	
返回值  调用线程的线程 ID 

int pthread_equal(pthread_t t1, pthread_t t2);
返回值		相等	--->0
				不等	--->0
功能 
判断线程号 t1 和 t2 是否相等,为了方便移植,尽量使用函数来比较线程 ID

int pthread_join(pthread_t thread, void **retval);
参数		retval:	用来存储线程退出状态的指针的地址
返回值		成功			--->0
				失败			--->错误码
功能
等待线程结束(此函数会阻塞),并回收线程资源,类似进程的 wait() 函数
如果线程已经结束,那么该函数会立即返回
一个线程仅允许一个线程使用pthread_join
一个线程不能被多个线程等待。否则第一个收到信号的线程成功返回。
其余调用pthread_join的线程返回错误码
注意

创建一个线程后应回收其资源,但使用 pthread_join() 函数会使调用者阻塞
Linux 还提供了非阻塞函数 pthread_detach() 来回收线程的资源

int pthread_detach(pthread_t thread);
返回值		成功			--->0
				失败			--->0,错误码
功能
线程分离的目的是将线程资源的回收工作交由系统自动来完成

注意		
调用 pthread_detach() 后再调用 pthread_join() , pthread_join() 会立马返回,调用失败

void pthread_exit(void *retval);
参数 :retval	--->存储线程退出状态的指针
功能:
退出调用线程,一个进程中的多个线程是共享该进程的数据段
因此,通常线程退出后所占用的资源并不会释放

int pthread_cancel(pthread_t thread);
返回值		成功		--->0
				失败		--->0
功能			给指定线程发送一个取消请求
一般情况下,线程在其主体函数退出的时候会自动终止,
但同时也可以因为接收到另一个线程发来的终止(取消)请求而强制终止。
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

一如既往の

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值