gpt4 book ai didi

objective-c - 将延迟的 semaphore_signal 发送到 macOS Grand Central Dispatch 应用程序中的信号量是一个好习惯吗?

转载 作者:行者123 更新时间:2023-12-03 17:33:24 24 4
gpt4 key购买 nike

我在 macOS Objective-C 应用程序中使用信号量和 GCD。我有一个常见的场景:

dispatch_semaphore_t fd_sema = dispatch_semaphore_create(0);

dispatch_async(dispatch_get_main_queue(), ^{

// Perform some activity
// But can potentially never complete

dispatch_semaphore_signal(fd_sema);
});

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(10 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
dispatch_semaphore_signal(fd_sema);
});

dispatch_semaphore_wait(fd_sema, DISPATCH_TIME_FOREVER);

基本上,我在这里尝试获得操作的超时。鉴于dispatch_semaphore_wait的参数只能是现在或永远,我使用dispatch_after block 来实现超时。您认为这是好的做法还是会导致问题和崩溃?感谢您的帮助。

最佳答案

您从哪里得知 dispatch_semaphore_wait() 的超时只能是现在或永远?这是不正确的。您可以传递 dispatch_time() 的结果,就像使用 dispatch_after() 一样。因此,不需要自己实现超时。

关于objective-c - 将延迟的 semaphore_signal 发送到 macOS Grand Central Dispatch 应用程序中的信号量是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41113459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com