iOS가 __thread
을 지원하지 않는다는 것을 알고 있습니다. 분명히 pthread_setspecific
을 사용하여이를 수행하는 방법이 있습니다. 그러나 이미이 기능을 구현 한 템플릿 클래스가 있습니까?스레드 로컬 저장 장치 및 iOS
필자는 휠을 다시 발명하기를 원했습니다. 특히 쓰기 쉬운 코드 조각이 아니기 때문에.
모든 링크는 대단히 감사하겠습니다!
건배
iOS가 __thread
을 지원하지 않는다는 것을 알고 있습니다. 분명히 pthread_setspecific
을 사용하여이를 수행하는 방법이 있습니다. 그러나 이미이 기능을 구현 한 템플릿 클래스가 있습니까?스레드 로컬 저장 장치 및 iOS
필자는 휠을 다시 발명하기를 원했습니다. 특히 쓰기 쉬운 코드 조각이 아니기 때문에.
모든 링크는 대단히 감사하겠습니다!
건배
재단은 -[NSThread threadDictionary]
을 제공합니다. 이를 사용하여 스레드 로컬 Objective-C 객체를 저장할 수 있습니다.이 객체에는 동적 저장 장치의 주소를 래핑하는 NSValue
이 포함될 수 있습니다.
코코아는 스레드 코드의 스레드 블라인드 실행으로 이동하며 사용 가능한 시스템 소유 스레드에서 실행할 코드 블록을 제출합니다. 이것은 Grand Central Dispatch에서 사용하는 모델이며 공유 된 NSOperationQueue
입니다. 스레드 로컬 저장소에 의존하는 코드는이 모델을 최대한 활용하지 못합니다. 자세한 내용은 Apple의 Concurrency Programming Guide을 참조하십시오.
ETA
:은에서 iOS 5로 시작/OS X 10.7, 그랜드 센트럴 디스패치 당신이dispatch_queue_set_specific
,
dispatch_queue_get_specific
및
dispatch_get_specific
기능을 통해 큐 - 로컬 스토리지를 호출 할 수있는 것을 얻었다. setter를 사용하면 키의 새 값을 설정할 때나 큐가 소멸 될 때 값에 추가하여 소멸자 함수를 제공 할 수 있습니다. getter sans queue는 현재 대기열을 컨텍스트로 사용하고 키가 현재 대기열에 정의되어 있지 않으면 현재 대기열의 대상 대기열에서 조회를 반복합니다 (프로토 타입 OO 시스템의 등록 정보 조회 방식과 유사 함).
['boost :: thread_specific_ptr'] (http://boost.org/doc/libs/release/doc/html/thread/thread_local_storage.html#thread.thread_local_storage.thread_specific_ptr)을 사용할 수 있습니까? –
@ Space_C0wb0y : 아마도 몰라요. 나는 그것의 가능성을 알고 있지 않았다 :) – Goz