我正在編寫一個ssh包裝器在objective-c中,我試圖實現一個maxTime命令應該執行。我實現它的方式是:我如何在指定的時間喚醒線程objective-c
主線:
- 計算超時
- 創建asyncThread(GCD隊列)來執行命令,並解析返回的數據
- waitForTimeoutOrSignal
- 返回結果
AsyncThread:
- 執行命令
- 得到返回的數據
- 如果接收到正確的數據信號MainThread
在C#我不得不使用ManualResetEvents信號的MainThread良好的成功。在Objective-C中,我能找到的最接近的類是NSCondition,但似乎它不是爲線程間通信而構建的。
事實上我得到:
2012-05-22 00:31:05.761 libssh2換-IOS [60821:11303] ** - [NSCondition 解鎖]:條件(「(空) 「)從 螺紋鎖打開,並沒有將其鎖定
2012-05-22 00:31:05.763 libssh2換-IOS [60821:11303] **上 _NSLockError()來調試中斷。
當我嘗試使用它。有沒有另一種方式來使用NSCondition或更好的方式讓線程休眠直到它收到某種信號?
大約有18種方法(好吧,也許一個誇張,但是一個半打)發送某種類型的定時器事件給一個線程。但要知道的最重要的事情是主線程不應該等待。 –