2014-10-28 1 views
0

스위프트의 일부 코드를 멀티 스레드하려고합니다.하지만 GCD가 스레딩을 처리하는 방법에 대해 궁금합니다. 내가 만든 각각의 새 스레드가 별도의 코어 (사용 가능한 경우)에서 자동으로 실행 되나요, 아니면 코어에 스레드를 할당하기위한 다른 메커니즘을 사용합니까?iOS/Mac에서 GCD를 통한 멀티 스레딩

기본적으로 내가 원하는 것은 동일한 코어에서 동시에 실행되는 새로운 스레드를 방지하는 것입니다. 나는 그들이 다른 코어에 있다는 것을 보증하고 싶다.

저는 App Store 또는 기타 응용 프로그램을 작성하지 않고 있습니다. 멀티 코어 컴퓨터의 다른 코어에서이 스레드를 실행하기 만하면됩니다. 온라인에서 찾을 수있는 것부터 GCD는 다른 코어에서 스레드를 실행할 것인지 여부를 결정하지만 이것이 단순히 가용성 또는 완전히 다른 것을 기반으로 한 것인지 여부는 수집 할 수 없습니다. 감사.

+1

이것은 여러 매개 변수에 따라 다릅니다. http://stackoverflow.com/a/23787746/1187415. –

답변

2

Grand-Central Dispatch API (dispatch_async 등) 또는 GCD를 사용하는 더 높은 수준의 API (예 : NSOperationQueue)를 사용하는 경우 GCD가 가장 적합한 스레드를 선택하므로, 다양한 요소에 따라 다릅니다. 쓰레드 나 프로세서 코어가 아닌 GCD 큐를 제어 할 수 있습니다.

NSThread을 사용하여 자신 만의 스레드를 만들 수도 있지만, GCD 이전 운영 체제에서 코드를 실행해야하는 경우가 아니라면 일반적으로 권장되지 않습니다. 두 개의 서로 다른 코어를 보장하는 유일한 방법은 mainThread과 분리 된 스레드에서 실행되는 코드를 사용하는 것입니다. 지금까지 내가 아는 한 훨씬 더 세분화 된 컨트롤은 공개 API를 통해 사용할 수 없습니다. (나는 개인용 API를 사용하여 가능하다고 합리적으로 확신하지만, 어떻게 알지는 못합니다.)