一,什么是线程安全?
1,线程安全就是说多线程访问同一代码,不会产生不确定的结果。换句话说,线程安全就是多线程访问时,采用加锁机制,当一个线程访问该类的某个数据时,用锁对数据进行保护,其他线程不能访问该数据直到该线程读取完,其他线程才可使用,线程安全不会出现数据不一致或者数据污染。反之, 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。
2,举个例子:
比如说,现在有一篮子苹果,有大有小,然后有一群人要来拿苹果了
在线程非安全情况下:
所有人一哄而上,变成了抢苹果了,因为大家都想要大的苹果,会发生冲突的。
在线程安全情况下:
把这一篮子苹果放到一个小屋里面,然后锁起来,然后每次只让一个人进去拿,等那个人拿完然后再让下一个人进去拿,这样保证了每个人都能拿到苹果,而且不会出现冲突。
3,有这么四类函数称为线程不安全的:
1>不保护共享变量的函数;
2>函数状态随着调用改变的函数;
3>返回指向静态变量指针的函数;
4>调用线程不安全函数的函数;
二,什么是可重入函数?
1,先看一个例子: