동시성을 위해 GCD 대신 원시 NSThreads를 사용하려는 경우가 있습니까? 나는 GCD를 좋아하지만, 코코아/코코아 터치를 위해 NSThreads를 사용해야하는지 알고 싶습니다.누구나 GCD에서 NSThread를 사용하고 싶습니까?
답변
제어, 성능 및 휴대 성을 위해 pthread
을 사용합니다. 경우에 따라 NSObject
인터페이스를 추가로 사용하려면 NSThread
을 사용하는 것이 좋습니다.
사용중인 API (예 : 실시간 I/O 또는 렌더링)와 스레드를 조정해야하는 몇 가지 하위 인터페이스가 있습니다. 때로는 사용하는 스레드와 관련하여 유연성을 가지고있는 경우도 있습니다. 이러한 상황에서는 NSThread
을 사용하는 것이 편리하기 때문에 이러한 인터페이스에서 CF 또는 NS 실행 루프를 쉽게 사용할 수 있습니다. 따라서 스레드에서 설정 한 실행 루프 매개 변수는 스레드 자체보다는 API에 더 많은 관심을 가질 것입니다. 이러한 경우 GCD가 반드시 대안이 아닐 수도 있습니다.
하지만 대부분의 개발자는이 수준으로 떨어질 필요가 없습니다.
GCD로 수행 할 수없는 이상한 일을해야하는 특별한 상황이있을 수 있습니다. 하지만 GCD로 할 수있는 일은 GCD와 쓰레드가 상호 배타적이지 않습니다. 실제로 쓰레드를 사용해야 할 경우 이미 가지고있는 GCD를 변경하지 않아도됩니다.
그러나 어떤 경우인지 확실하지 않습니다. 어쩌면 보조 전문 RunLoop (GCD로 할 수 있는지 확실하지 않지만 확실하게 스레드로 할 수 있음)을 설정해야하는 경우 일 수 있습니다. 아니면 내가 지금 생각할 수없는 특별한 경우가있을 수 있습니다.
OS X 또는 iOS에서 직접 NSThread/pthread API를 직접 사용할 필요는 거의 없습니다. 다른 플랫폼에서는 가능할 수도 있습니다 (GCD가 * BSD, Linux 및 Windows에 더 많이 포팅 됨 - Grand Central Dispatch의 Wikipedia 페이지 참조). 그러나 Apple OS 플랫폼에서는 거의 항상 더 나은 결과를 얻을 수 있습니다. 시스템은 스레드 수명주기 관리를 수행합니다. 자신 만의 스레드 관리를 원할 수도있는 유일한 경우는 스레드 우선 순위를 관리하고 각 스레드가 직접 수행하는 작업량의 균형을 조정하여 스레드 대기 시간을 직접 제어해야하는 고도의 실시간 시나리오입니다.
- 1. 언제 OneTuple을 사용하고 싶습니까?
- 2. System.Diagnostics.Debugger.Break() java를 사용하고 싶습니까?
- 3. 언제 NSPropertyMapping을 사용하고 싶습니까?
- 4. UINavigationController 내부에서 UIPickerImageController를 사용하고 싶습니까?
- 5. GCD에서 만든 스레드 수?
- 6. 누구나 JS.Class를 사용하고 좋아 했습니까?
- 7. 젠드 프레임 워크 외부에서 Zend_translate를 사용하고 싶습니까?
- 8. 여기에 어떤 종류의 Ruby 변수를 사용하고 싶습니까?
- 9. Android : 다양한 픽셀 밀도의 이미지를 사용하고 싶습니까?
- 10. 왜 저장소 패턴과 함께 UnitOfWork를 사용하고 싶습니까?
- 11. 왜 asve.net에 반대하는 devexpress gridview를 사용하고 싶습니까?
- 12. 왜 WCF 이외의 다른 것을 사용하고 싶습니까?
- 13. NSString filePaths 또는 NSURL을 사용하고 싶습니까?
- 14. 시맨틱 웹이란 무엇이며, 왜 그것을 사용하고 싶습니까?
- 15. 누구나 .NET으로 Endeca를 구현 했습니까? Endeca 또는 FAST를 권하고 싶습니까?
- 16. 내가 만든 NSThread를 출시해야합니까?
- 17. NSThread를 반복하는 방법?
- 18. 누구나 Microsoft ASML 언어를 사용하고 있습니까?
- 19. Rhinomocks는 누구나 사용하고 좋은 리소스를 가지고 있습니다.
- 20. 여러 NSURLConnections가 여러 NSThread를 만드나요?
- 21. NSThread를 반복적으로 호출하는 방법은 무엇입니까?
- 22. NSThread를 통해 인수를 전달하는 방법
- 23. NSThread를 공개하는 것이 언제 안전합니까?
- 24. GCD에서 대기열 이름/라벨을 얻는 중
- 25. JSON 파일을 얻기 위해 트위터에서 제공하는 URL을 사용하고 싶습니까?
- 26. 다음 안드로이드 게임에 어떤 컨테이너/클래스를 사용하고 싶습니까?
- 27. 왜 C++보다 느린 C#을 사용하고 싶습니까?
- 28. 프로필을 Qt에 저장하고 싶다면 SQLite 또는 다른 것을 사용하고 싶습니까?
- 29. 의미 론적 마크 업이란 무엇이며, 왜 그것을 사용하고 싶습니까?
- 30. 언제 Ruby On Rails 하위 모듈을 사용하고 싶습니까?