I have implemented an Operation on an OperationQueue.
override func main() {
super.main()
if isCancelled {
return
}
if member.memberType == .timed {
triggerRestEvent(duration: member.restDuration)
}
if isCancelled {
triggerEndEvent()
}
}
The triggerRestEvent
function is actually calling Thread.sleep
. Once the sleep has expired we then check isCancelled
.
Is there a way to interrupt Thread.sleep
when isCancelled
is toggled on?
Alternative - RunLoop
The docs for RunLoop suggest a while loop around the function run
with a custom condition in the while loop. But how would I setup a timer to toggle the while loops execution? And apparently using a while loop in this way, for this purpose, is an antipattern these days?