温故而知心 - 多线程中的Local和share变量
2016-09-21 本文已影响0人
哈比猪
多线程中我们往往会忽略一个东西(至少我忽略了_),就是每个线程独有的local变量
线程local变量
例如:
static __thread int a[10];
通过定义static加__thread来定义线程内的local变量,每一个线程内都独享这样一个局部变量,不会被其他线程的动作所影响,也就是说a[10]对于每个线程来说都是隔离的
线程安全共享变量
可以通过定义volatile变量来实现,但要注意最好使用volatile作用在标志状态的变量上,因为volatile并不是原子的,如果应用不当会导致多线程安全问题。
简单例子定义:
static volatile int a = 10;