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] ;
	凡带有这种说明符的变量,每个线程都拥有一份对变量的拷贝。线程局部存储中的变量将一直存在,直到
  线程终止,届时将自动释放这一存储。

 

猜你喜欢

转载自blog.csdn.net/enlyhua/article/details/82929392