나는 누군가가 올바른 방향으로 나를 가리킬 수 있기를 바랄 뿐이라는 아주 간단한 질문을 가지고있다. 나는 글로벌 잠금에 대한 올바른 목표 C 접근법을 파악하려고하는 자바 개발자입니다. 여러 곳에서 인스턴스화 된 클래스가 있습니다. 각 인스턴스는 하나의 공통 파일을 읽고 씁니다. 따라서이 클래스의 모든 메서드 호출이 원자 적이어야합니다. Java에서는 다음과 같이 수행됩니다.객관적인 전체 수업을위한 잠금 C
static Object lock
public void writeToFile(){
synchronized(lock){
//thread safe code goes here
}
}
정적 식별자는 모든 인스턴스에서 잠금 개체가 공유되므로 스레드 안전성이 높습니다. 불행히도 iOS에는 클래스 변수가 없기 때문에이 기능을 구현하는 가장 좋은 방법은 무엇인지 모르겠습니다.
참고 : ... 더 많은 정보에 대한 스레드 프로그래밍 참조에 동기화를
스레드 프로그래밍 참조를 읽기 전 @synchronized (self.class)를 시도하고 아무 것도 불평하지 않았지만, 이것이 올바른 접근 방법이라고 100 % 확신하지 못했습니다. – akhalsa
'@synchronized (self.class)'는 실제로 그 클래스의 모든 객체를 작동시키고 차단할 것입니다. 이 인스턴스를 잠그기 위해서라면,'@synchronized (self)'를 대신 사용하십시오. 비 차단 잠금이 필요한 경우 http://stackoverflow.com/questions/17396945/how-do-i-check-if-an-object-is-being-synchronized/17399427#17399427 –