スレッドから1つの関数をロックすると、他のすべてのスレッドが異なる関数でロックを取得しようとします。マルチスレッド環境での複数のリソースの複数の場所での同期(self)ブロック、目的c
下記のクリティカルセクションにアクセスするためにgcdを使うことができます。ちょうど@synchronized(self)の仕組みを知りたがっています。 例:
実行がwriteString()の@synchronized(self){}のときに、writeString()呼び出しのみで複数のスレッドがブロックされますか?
OR writeString()で@synchronized(self){}を実行すると、@synchronized(self){}(egreadDataFromFile())と同じクラスの関数を呼び出すすべてのスレッドがブロックされますか?
-(void)writeString:(NSString*)string forObj:(id)obj
{
@synchronized(self)
{
[obj write:string];
}
}
-(void)readDataFromFile:(NSString*)file
{
@synchronized(self)
{
[self read];
}
}
Welcome to Stackoverflow!質問の本文にタイトルをコピーする必要はありません。 – kelin
コードを表示する必要があります。同じ「自己」または異なる「自己」? – bbum
@shweta同じクラスのものは無関係です。それは同じ*インスタンス*ですか? – bbum