前言:在多线程的初步学习中,有两个概念时常被一起提到,是否可重入与线程是否安全,由于这两者有一定的关联性,就有部分的同学将其混为一谈。
导致线程安全的本质是由于,多线程的执行流的顺序的不确定性,而这个顺序的不确定性对于其本身的局部或作用域只在线程内部的资源并无影响,但多线程本身具有资源共享的特点,若多线程内对于共享资源有了某些改动可能的结果就是不确定的,这结果不确定可是个大问题。
简而言之,多个线程并发时,对全局变量或者静态变量进行操作,可能出现不同的结果。
一个函数在重入的情况下,运行结果不会出现任何不同或者任何问题,则该函数被称为可重 入函数,否则,是不可重入函数。
我们从字面意思上理解,可重入就是可以重复进入的函数,这里的重复进入不是递归函数的函数回调,而是在不同线程同时执行的函数的意思,即同一个函数被不同的执行流调用,当前一个流程还没有执行完,就有其他的执行流再次进入。