线程的学习3—线程的控制


一、线程的属性

创建线程时,可以指定线程的属性。

结构体:pthread_attr_t           attr;

初始化:使用函数pthread_attr_init(&attr)函数初始化该结构,初始化后,该结构将设置为系统默认的属性值。

销毁: pthread_attr_destory(&attr),在调用create函数创建好线程后,就可以调用销毁函数,销毁属性结构体。


线程的属性包含:


detachstate


设置线程为分离状态的方法有两种:第一种就是上面所说的通过改变线程属性,但这种方法感觉太麻烦,常用的就是第二种方法,使用函数pthread_detach(pthread_id)函数使线程分离。


guardsize  设置避免栈溢出的警戒缓冲区



stacksize  改变栈的默认大小



二、同步属性

1、互斥量属性

 结构体:pthread_mutexattr_init    attr

初始化和销毁函数:


互斥量属性包含:进程共享属性和类型属性。

进程共享属性:



线程的私有数据

为什么要引入线程的私有数据?

1、保护线程的数据,防止与其他线程混淆

2、如:线程设置自己的error值,并不会影响其他线程设置自己的error值

同一进程中的线程共享进程中的所有数据,那么如何实现私有数据呢?  使用键与私有数据进行关联

使用函数创建键:

创建的键存放在keyp指向的内存单元,第二个参数为析构函数,线程正常退出时,会调用,非正常退出时(exit,_exit, _Exit、abort),不会调用。如果线程私用数据使用malloc分配了内存空间,就需要制定析构函数,释放内存。




取消选项

即该属性决定响应pthread_cancel函数时所呈现的行为。

可取消:PTHREAD_CANCEL_ENABLE

不可取消:PTHREAD_CANCEL_DISABLE

通过函数设定:






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值