31.Linux/Unix 系统编程手册(上) -- 线程:线程安全和每线程存储

1.线程安全
	若函数可同时提供多个线程安全使用,则称之为线程安全函数.
	不安全的原因:使用了在所有线程之间共享的全局或静态变量。
	实现线程安全方法:使用互斥量


2.可重入函数和不可重入函数
	可重入函数则无需使用互斥量即可实现线程安全。其要诀在于,避免对全局和静态变量的使用。


3.一次性初始化
	phtread_once() 可以确保无论有多少线程调用,也只会执行一次由 init 执行的调用者定义的函数.


4.线程特有数据
	线程特有数据,可以无需修改函数接口,而实现已有函数的线程安全。
	线程特有数据使得每个调用线程维护一份变量的副本.
	pthread_key_create();
	pthread_setspecific();
	pthread_getspecific();

5.线程局部存储
	类似于线程特有数据,线程局部数据提供了持久的每线程存储。
	优点:比线程特有数据简单,只需简单的在全局或静态变量的声明中包含 __thread 说明即可。
	static __thread buf[MAX_ERROR_LEN] ;
	凡带有这种说明符的变量,每个线程都拥有一份对变量的拷贝。线程局部存储中的变量将一直存在,直到
  线程终止,届时将自动释放这一存储。

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值