문자열에 따라 동기화 알고리즘을 구현해야합니다. 두 스레드가 동기화되어야하고 스레드 쌍이 문자열 값 (문자열 A에 대한 스레드 한 쌍, 문자열 B에 대한 한 쌍의 쌍)에 의존한다는 것을 의미합니다.Objective C에서 Java에서 intern()을 사용하는 경우
자바에서는 두 인 스레드가 공유하는 단일 잠금 개체를 얻기 위해 intern 메서드를 사용하여 알고리즘을 구현할 수있었습니다. Java는 jvm 내장 풀에서 모든 litteral을 가져오고 interne는 동적으로 생성 된 문자열을 풀의 litteral로 변환합니다.
나는 이해했다 there is also a pooling mechanism in Objective C.
하지만 Java에서 intern()과 동일한 기능을합니다. 즉, 일반 String을 문자열 상수 풀에서 litteral String으로 변환하는 방법입니다. 이 두 문자열이 동일한 객체에 동기화되도록이 고유 한 String litteral에 대한 참조를 얻으려면.
나는 약간의 문제가 있음을 알고 있지만, 나는 그것들이 피하고자하는 많은 String 비교를 함축하고있다. (비록 인턴이 최선을 다하지만 최선의 방법이라고 생각한다.)
좀 더 일반적인 용어로 내 문제를 설명하려면 : String을 잠금에 매핑하는 Dictionnary를 피하고 싶습니다. 자바는 String litteral (풀링 된)이 자물쇠가 될 것이므로 인턴 덕분에 그렇게 할 수 있습니다. 어떤지도가 있습니까? 아니면이지도를 사용해야합니까?
감사합니다 여러분, 스테판
문자열 리터럴을 통해 동기화하는 것이 좋습니다. 문자열 변수 OK를 통해,하지만 리터럴에, 나는 모르지만 ...하지만 어쩌면 내가 틀렸다. –
상위 목표가 무엇인지 설명하는 것이 좋습니다. 일반적인 관점에서 무엇을 달성하고 싶습니까? 귀하의 질문은 Objective-C/Cocoa의 다른 방법을 통해 더 잘 해결 될 수있는 문제에 대해 매우 구체적인 해결책을 가지고있는 것처럼 들립니다. – DarkDust
이 끝에 업데이트되었습니다. – Snicolas