gpt4 book ai didi

cocoa - 如何暂停 NSThread 直到收到通知?

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

我有一个工作线程,我想要执行其任务的一部分,然后暂停并等待来自另一个线程的“确定,继续”命令,然后暂停并等待,等等。

用例是:控制对象是一个 View ,我想显示有关工作线程内部发生的情况的信息,并允许我“单步”通过工作线程,因为它是它的事情。

我的 worker 中相当丑陋和粗暴的东西是这样的:

NSLog(@"paused");
paused = YES;

while (paused)
{
[NSThread sleepForTimeInterval:0.25];
}
NSLog(@".. continuing");

...但我忍不住认为一定有更好的方法,也许涉及 NSLocks 或类似的方法。

评论、提示建议?

谢谢!

最佳答案

查看NSConditionConditions线程指南中的部分。代码看起来像:

NSCondition* condition; // initialize and release this is your app requires.

//Worker thread:
while([NSThread currentThread] isCancelled] == NO)
{
[condition lock];
while(partySuppliesAvailable == NO)
{
[condition wait];
}

// party!

partySuppliesAvailable = NO;
[condition unlock];
}

//Main thread:
[condition lock];
// Get party supplies
partySuppliesAvailable = YES;
[condition signal];
[condition unlock];

关于cocoa - 如何暂停 NSThread 直到收到通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1557070/

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