文件名称:使用条件-外军电台手册
文件大小:1.39MB
文件格式:PDF
更新时间:2024-06-27 16:33:59
objective-c ios
4.7 使用条件 条件是一个特殊类型的锁,你可以使用它来同步操作必须处理的顺序。它们和互 斥锁有微妙的不同。一个线程等待条件会一直处于阻塞状态直到条件获得其他线程显 式发出的信号。 由于微妙之处包含在操作系统实现上,条件锁被允许返回伪成功,即使实际上它 们并没有被你的代码告知。为了避免这些伪信号操作的问题,你应该总是在你的条件 锁里面使用一个断言。该断言是一个更好的方法来确定是否安全让你的线程处理。条 件简单的让你的线程保持休眠直到断言被发送信号的线程设置了。 以下部分介绍了如何在你的代码中使用条件。 4.7.1 使用 NSCondition类 NSCondition 类提供了和 POSIX 条件相同的语义,但是它把锁和条件数据结构封 装在一个单一对象里面。结果是一个你可以像互斥锁那样使用的对象,然后等待特定 条件。 列表 4-3显示了一个代码片段,它展示了为等待一个 NSCondition 对象的事件序 列。cocaoCondition变量包含了一个 NSCondition对象,而 timeToDoWork 变量是一 个整形,它在其他线程里面发送条件信号时立即递增。 Listing 4-3 Using a Cocoa condition [cocoaCondition lock]; while (timeToDoWork <= 0) [cocoaCondition wait]; timeToDoWork--;