0

두 개의 스레드가 있습니다. 스레드 1은 NSMutableDictionary에 키 - 값 쌍을 설정하고 나중에이 값을 읽고 스레드 2는 다른 키 - 값 쌍으로 동일한 작업을 수행합니다. 키가 다르며 각 스레드는 설정된 키 - 값 쌍만 읽습니다. 그러나 어느 스레드가 다른 스레드가 쓰는 동안 읽을 수 있습니다.스레드 안전성 : 서로 다른 NSMutableDictionary 항목에 액세스하는 두 스레드

그럼 내 질문은 두 스레드가 같은 NSMutableDictionary의 다른 항목에 동시에 액세스하는 경우 NSMutableDictionary를 보호해야하는지 여부입니다. (NSMutableDictionary 전체가 스레드에 의해 "claim"되었습니까? 아니면 개별 항목에 대한 작업이 독립적입니까?)

+0

참조 :

@synchronized(myDict) { valueFromDict = myDict[@"someKey"]; } 

그리고 다른 스레드에서 : //stackoverflow.com/questions/1986736/nsmutabledictionary-thread-safety – rmaddy

답변

0

사전과 같은 컨테이너 객체는 다른 스레드에서 읽고 쓰는 동안 변경할 수 없습니다.

사전에 키/값 쌍을 설정하면 사전이 변경됩니다. 각 키/값 쌍은 독립적 인 엔티티가 아닙니다.

사전을 보호해야합니다. 충돌하거나 다른 바람직하지 않은 동작이 발생할 수 있습니다. 한 가지 간단한 방법은에서 오브젝티브 C는 @synchronized 지시어를 사용하는 것입니다 그렇게하고 지침에 전달 된 객체로 사전 자체를 사용 : HTTPS

@synchronized(myDict) { 
    myDict[@"someOtherKey"] = someValue; 
}