多线程安全
函数的多线程安全性是指,一个函数在被调用过程中,还未返回时,又再次被其他线程调用的情况下,函数的执行结果的可靠性。如果结果是可靠的,则称这个函数是多线程安全的;反之,则这个函数是非多线程安全的,原因是多线程冲突。
可能运行于多线程环境的函数,必须是多线程安全的。
这是因为存在多线程同时调用该函数的可能,必须保证函数的可靠性。
判断是否是多线程环境规则:
如果函数A的所有调用源只运行于同一单线程环境,则函数A也是只运行在单线程环境的。
如果函数A的其中一个调用源是可能运行在多线程环境的,或者多个调用源可能运行于不同的可并发的多个线程环境,而且调用路径上没有才用多线程序列化成单线程的强制措施,则函数A也是可能运行在多线程环境的。
如果函数A所有的可能运行于多线程环境的调用路径上,都有多线程序列化成单线程的强制措施,则函数A是运行在单线程环境的。
多线程序列化成单线程的强制措施是指如互斥体、自旋锁等同步手段。
只使用函数内部资源,完全不使用全局变量、静态变量或者其他全局性资源的函数是多线程安全的。
如果对某个全局变量或者静态变量的所有访问都被强制的同步手段限制为同一时刻只有一个线程访问,即使使用了这些变量,对函数的多线程安全性也是没有影响的。