我有一个简单的场景,其中一个
销毁过程如下:
我该如何确保在Objective-C中,一旦进入代码段,调度程序不允许挂起此线程,直到代码段结束?换句话说,我想使这个代码段是原子的。
据我了解,
NSTimer
被安排在后台线程上定期通过套接字发送数据包。然而,我的主线程负责销毁计时器和套接字。销毁过程如下:
if (self.connected) {
[self.pingTimer invalidate];
if (self.socket != -1) {
close(self.socket);
self.socket = -1;
}
self.connected = NO;
}
我该如何确保在Objective-C中,一旦进入代码段,调度程序不允许挂起此线程,直到代码段结束?换句话说,我想使这个代码段是原子的。
据我了解,
@synchronized
指令是一个高级信号量/互斥锁,因此要确保该代码块的原子性,我需要将代码块本身以及所有引用self.connected
、self.pingTimer
和self.socket
的代码都放入@synchronized
指令中。我的想法正确吗?