in Sources/BoltsSwift/Task.swift [238:266]
func trySet(state: TaskState<TResult>) -> Bool {
var stateChanged = false
var continuations: [Continuation]?
var completedCondition: NSCondition?
synchronizationQueue.sync(flags: .barrier, execute: {
switch self._state {
case .pending:
stateChanged = true
self._state = state
continuations = self._continuations
completedCondition = self._completedCondition
self._continuations.removeAll()
default:
break
}
})
if stateChanged {
completedCondition?.lock()
completedCondition?.broadcast()
completedCondition?.unlock()
for continuation in continuations! {
continuation()
}
}
return stateChanged
}