我发现a great post解释了重入问题,但我很想知道函数在单线程环境中可以被中断的各种方式。
final class Radiator {
    
    private(set) var modelName: String
    private(set) var serialNumber: Double
    
    init(modelName: String, serialNumber: Double) {
        self.modelName = modelName
        self.serialNumber = serialNumber
    }
    
    func update(modelName: String, serialNumber: Double) {
        self.modelName = modelName
        self.serialNumber = serialNumber
    }
}如果我们在内存中创建了一个带有初始值的上述实例,然后稍后调用更新函数,那么如何以这样的方式中断上述更新函数的执行,从而使模型名接收到一个新值,而序列号却没有呢?
另一个例子可能是一个函数,它打开一个文件,操作一个文件,然后关闭该文件。中断可能无法关闭文件。这是如何在一个线程环境中实现的?
发布于 2022-03-18 17:06:13
我感谢@joakim Danielson在评论中所作的澄清。
这个上下文中的中断并不一定意味着其他调用的执行被停止。相反,在前面的调用完成之前,已经开始了一次额外的调用。
https://stackoverflow.com/questions/71508458
复制相似问题