저는 멀티 스레딩 프로그래밍에 익숙하지 않았습니다. & 코코아.Obj-c/Cocoa의 뮤텍스
iVar에 NSMutableArray
액세스/수정하려면 잠금 장치가 필요합니다. 가장 간단한 방법은 무엇입니까?
내가 여기있는 동안 Obj-c/Cocoa를 사용하여 멀티 스레드 프로그래밍에 대해 읽었습니까? Thx.
저는 멀티 스레딩 프로그래밍에 익숙하지 않았습니다. & 코코아.Obj-c/Cocoa의 뮤텍스
iVar에 NSMutableArray
액세스/수정하려면 잠금 장치가 필요합니다. 가장 간단한 방법은 무엇입니까?
내가 여기있는 동안 Obj-c/Cocoa를 사용하여 멀티 스레드 프로그래밍에 대해 읽었습니까? Thx.
@synchronized
블록 사용 :
@synchronized(MyArray)
{
// thread safe code
}
이 블록 시간에 엑스 코드를 인식하지만, 날 믿어되지 않습니다, 그것은 작동!
자세한 내용은 this 문서를 참조하십시오.
또 다른 방법은 GCD 및 직렬 대기열을 사용하는 것입니다.
NSArray 속성에 대해 비공개 직렬 큐를 사용하는 접근자를 작성하십시오. 배킹 스토어에서 값을 설정하고 가져온다. 직렬 대기열은 FIFO이므로 순차적으로 블록을 실행하므로 스레드 안전 액세스를 속성에 제공합니다.
몇 가지 예를 좀 더 구체적으로 설명해 주시겠습니까? 고마워! –
__block과 같은 것입니다. id val = nil; dispatch_sync (aQueue,^{val = [배열 objectAtIndex : 인덱스];}); 값을 얻고 dispatch_sync (aQueue,^{[배열 addObject : obj];}); 세터에게. –
'dispatch_sync'에주의하십시오! 현재 큐에서 호출되면 교착 상태가 발생합니다. –
@downvoter explain? –