【发布时间】:2020-02-06 03:22:22
【问题描述】:
在 DispatchSemaphore 函数期间, 先调用 Signal() 再调用 Wait() 可以吗? 如果连续调用 Signal() N,内部的值是否变为 N, 或者我想知道如果没有调用Wait(),多次调用Signal()不会增加值。
let sempahore = DispatchSemaphore(value: 0)
semaphore.signal()
semaphore.signal()
semaphore.signal()
// in time, what is sempahore value? 1 or 3?
sempahore.wait()
// in time, what is semaphore value? 0 or 2?
// wait for more signal? or not?
【问题讨论】:
-
你试过了吗?如果您连续两次、三次或四次拨打
sempahore.wait()会发生什么?哪一个挡住了? -
是的,我做到了。尽管有多个 Wait() 号码,但对 Signal() 的一次调用将解锁锁。我不知道你怎么了。初始化Semaphore时是否与initValue有关?
-
@Viktor:这个问题不是 Swift 5 特有的。请添加 [swift5] 标签(或其他与版本相关的标签),仅针对有关该特定版本的语言更改的问题。