我正在使用objective编写ssh包装器,我正在尝试实现命令执行时应该使用的maxTime。我实施它的方式是:
主线程:
data
结果
AsyncThread:
在C#中,我成功地使用ManualResetEvents来向MainThread发送信号。在Objective中,我能找到的最接近的类是NSCondition,但它似乎不是为线程间通信而构建的。
事实上我得到了:
2012-05-22 00:31:05.761 libssh2-for- it 60821:11303 ** -NSCondition解锁:条件( '(null)')
2012-05-22 00:31:05.763 libssh2-for-iOS 60821:11303*中断_NSLockError()进行调试。
当我尝试使用它的时候。是否有其他方式使用NSCondition,或者线程在接收到某种信号之前睡觉的更好方式?
发布于 2012-05-23 03:46:52
好吧,原来我几乎是对的。我的问题(正如编译器很方便地提到的那样)是,我在一个线程中锁定,而在另一个线程中解锁。真正解决问题的是学习NSCondition中的“信号”方法。现在我重写了代码:
Worker #1线程:
[NSCondition lock]
start worker thread
if([NSCondition waitUntil:maxTime])
// got signal
else
// timed out
[NSCondition unlock]Worker #2线程:
Do work
[NSCondition signal]https://stackoverflow.com/questions/10698294
复制相似问题