私はobjective-cでsshラッパーを書いていますが、コマンドの実行に必要なmaxTimeを実装しようとしています。私がそれを実装する方法は次のとおりです。
メインスレッド:
- タイムアウトを計算する
- コマンドを実行して返されたデータを解析するためのasyncThread(GCDキュー)を作成します
- waitForTimeoutOrSignal
- 結果を返す
AsyncThread:
- コマンドを実行する
- 返されたデータを取得する
- 正しいデータ信号を受信した場合MainThread
C#では、ManualResetEventsを使用してMainThreadに信号を送ることに成功しました。Objective-Cで私が見つけることができる最も近いクラスはNSConditionですが、スレッド間通信用に構築されていないようです。
実際、私は次のようになります。
2012-05-22 00:31:05.761 libssh2-for-iOS [60821:11303] **-[NSConditionunlock]:条件('(null)')がロックされなかったスレッドからロック解除されました
2012-05-22 00:31:05.763 libssh2-for-iOS [60821:11303] **デバッグするには_NSLockError()を中断します。
使ってみると。NSConditionを使用する別の方法、またはスレッドが何らかの信号を受信するまでスリープするためのより良い方法はありますか?