本文共 574 字,大约阅读时间需要 1 分钟。
今天看到一个新词汇:可重入。来总结一下。
可重入和线程安全有什么区别和联系呢?所以呢,线程安全和可重入并不是完全一样的概念,虽然有交集,但是可重入不一定线程安全,线程安全不一定可重入。
比如,一个函数会读取一个全局变量,但是不会写入,并且读的过程没有加锁。那么这个函数就是可重入但是不是线程安全的。因为不论怎么调用这个函数,这个全局变量都不会变。但是当其他函数改变这个全局变量时,这个函数可能会产生超出预期的结果。
同样,一个函数会读取一个全局变量,但是不会写入,这次读的过程加锁了,那么这个函数就是线程安全但是不可重入的。因为在获取锁但是还未释放的时候,如果遇见了中断,就会产生死锁。
所以一般而言,可重入函数的所有所需数据都是通过参数传递,并且尽量不使用指针。
(若有错漏,还望指摘)
转载地址:http://ntxzi.baihongyu.com/