可重入与线程安全

网上很多相关的分析文章。我感觉这是两个不同的问题,可重入问题是在signal handler里发生的,是由于使用全局数据和静态数据引起的,只要修改静态数据或全局数据就不是可重入的,通过避免这种问题(即尽量不使用全局数据)解决,跟线程无关。线程安全问题是在线程间发生的访问共享资源引起的,通过避免同时访问资源(加各种锁)解决。

很多人分析的线程安全的是否是可重入的,可重入的是否是线程安全的,我感觉可重入跟线程安全没关系,是两件八竿子打不着的事情。一个函数既使用了静态数据又访问了共享资源,那么就会同时面临两个问题,不能因为一个问题解决了就说另一个问题也解决了。

你可能感兴趣的:(可重入与线程安全)