2009-11-24 6 views
3

글쎄 Objective C & C++을 모두 사용하는 응용 프로그램을 가지고 있지만 이식성을 위해 가능한 한 많이 C++을 사용하려고했습니다 .... 이제 몇 가지 문제가 있습니다. 그 스레드가 필요합니다 NSThread 대신에 pthread을 사용하려고 생각했습니다 ... 괜찮습니까 pthread을 사용합니까? 애플은 앱 스토어에서 내 앱을 거부하여 그것을 사용하기 위해 나를 처벌 할 것인가 ...?우리는 아이폰 애플 리케이션에서 NSThread 대신 pthread를 사용할 수 있습니까?

답변

7

NSThread은 내가 pthread를 사용하는 애플의 부분에서 거부로 이어질 것이 어떤 이유를 볼 수 없습니다 어쨌든

pthread 중심으로 구축되어

+6

예. 사실, pthreads를 사용하여 스레드를 생성하고 그 스레드에서 [NSThead currentThread]를 호출하여 pthread의 NSThread 버전을 얻거나 비슷하게 pthread_self를 NSThread 만든 스레드에서 호출하는 데 아무런 문제가 없습니다. –

+0

@ Apple은 우리가 사용하는 기술을 알고 있습니까? 이 경우 pthread 또는 NSThread입니다. 그렇다면 애플이 개발자에게 사용하도록하는 기술은 무엇입니까? 고마워 :) – hqt

+0

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/CreatingThreads/CreatingThreads.html - Apple은 "NSThread 클래스가 Cocoa 응용 프로그램에서 스레드를 만드는 주요 인터페이스이지만 POSIX 스레드를 사용하는 것이 더 편리 할 경우 POSIX 스레드를 대신 사용할 수 있습니다. " 그렇다면 올바르게 작동한다면 아무런 문제가 없어야합니다. – JustAMartin

1

내 애플은 pthread와 API를 사용 SCHED_FIFO에 SCHED_OTHER에서 스케줄링 정책을 변경, 스레드의 우선 순위를 변경합니다. 잘 작동합니다.

그러나 NSThread 대신 pthread의 부작용을 알지 못하기 때문에 스레드에서 Cocoa 터치 프레임 워크 API를 사용하지 마십시오.

3

NSThread는 대부분 pthread 의미 체계를 감싸는 래퍼입니다.

장점 : 이 - NSThreadWillExitNotification 통지 NSThread이 종료 - NSMutableDictionary 스레드 로컬 저장소

제한 : - 만 NSThread

코코아 당신이 원하는 것을 알 필요가 있다고주의를 분리 만들 수 있습니다 멀티 스레딩. 먼저 응용 프로그램이 considered multi-threaded이 될 수 있도록 더미 NSThread를 분리하는 것이 중요합니다.

관련 문제