2012-03-21 4 views
0

私は私のクラスのプライベート変数を持っている:2つのスレッドをBOOL変数と同期させる方法は?

BOOL isEnabled; 

と方法:

-(void) foo { 

    if(isEnabled) { 
    // do some operations 
    } 
    else { 
    // wait till other thread makes isEnabled = TRUE and do operations 

    } 
} 

私は何とか方法をsynchnizeする必要があります。 isEnabledが成立した後、私は自分の操作を行うことができます。

答えて

2

あなたの質問は非常に一般的で、最小限の例がなければ答えることは難しいです。

異なるスレッドの実行を同期させたい場合は、NSOperationNSOperationQueueについてお読みください。 NSOperationQueueは無料で同期を処理します。

簡単に言えば、NSOperationは、バックグラウンドで実行される操作です。各操作はキュー内で実行されます(NSOperationQueue)。

NSOperationQueueには、バックグラウンドで実行できる同時操作の数を指定できます。

[yourQueue setMaxConcurrentOperationCount:1]; 

は、例えば、上記のコードは、異なる動作のうち、そのリソースへのアクセスを同期するために、この同じ共有リソースについて1に実行できる操作を設定します。

さらに、操作間の依存関係を設定できます。

[operation2 addDependency:operation1]; 

コードがoperation2operation1必見仕上がりが実行できることを意味します。

詳細については、nsoperation-and-nsoperationqueueに関する次のチュートリアルをお勧めします。もちろん、Appleのdocでクラス参照を参照することもできます。

希望します。

+0

説明のため本当にありがとうございます – Buron

関連する問題