스레드에서 하나의 함수로 잠금을 설정하면 다른 함수에서 잠금을 획득하려고 시도하는 다른 스레드를 모두 차단합니다.다중 스레드 환경에서 여러 리소스의 여러 위치에서 @synchronized (self) 블록, 목표 C
아래에 언급 된 중요 섹션에 액세스하기 위해 gcd를 사용할 수 있습니다. @c 동기화 된 (자체) 작동 방법을 알고 싶을뿐입니다. 예 :
writeString() 호출만으로 여러 스레드가 실행되면 writeString()에서 @synchronized (self) {} 될 때 차단됩니까?
또는 writeString()에서 @synchronized (self) {}에 @synchronized (self) {} (예 :readDataFromFile())와 동일한 클래스의 함수를 호출하는 모든 스레드가 차단됩니다.
-(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