- 하나의 스레드에 하나의 대기열 만 있습니까?
- globalQueue에 비동기 적으로 블록을 디스패치하면 아무래도 주 스레드에서 실행할 수 있습니까?
dispatch_sync
은 어떤 상황에서 데드 록이 발생합니까?
답변
1. 하나의 스레드에만 하나의 대기열이 포함되어 있습니까?
관계는 한 가지 방법입니다. 직렬 대기열은 스레드가 전달 된 블록을 실행하기 위해 보유 할 수 있지만 스레드는 대기열을 알지 못합니다. 음, 메인 쓰레드는 특별하다. 메인 큐를 알고있다.
내 생각은, 내가 파견 큐 많은 스레드를 포함하는 스레드 풀을 관리하는 생각에 블록 또는 기능을 실행할 스레드를 표시하지 않습니다
파견 큐, 그것은 하나 개의 유휴 스레드 때를 가져옵니다 블록이 전달됩니다. 따라서 하나의 쓰레드가주기 시간 동안 많은 디스패치 큐에서 작동 할 수 있습니다.
블록을 큐로 보내면이 블록이 실행중인 스레드가 결정된 하나의 디스패치 큐에서 작동하므로 dispatch_get_current_queue
을 사용하여 얻을 수 있습니다.
2. 블록을 globalQueue에 비동기 적으로 보내면 아무 때나 메인 스레드에서 실행할 수 있습니까?
나는 그것이 오랜 시간 작업 인 경우, 그것은 메인 스레드를 차단, 블록의 실행 시간을 평가할 수 없기 때문에, 주 스레드에서 globalQueue 어떤 블록을 실행하지 것이라 생각합니다.
3. 어떤 상황에서 dispatch_sync가 데드 록을 유발합니까?
나는 당신은 dispatch_sync 또는 함수에 전달하는 을 계획하고 동일한 대기열에서 실행중인 작업에서 dispatch_sync_f 기능 를 호출해서는 안 Concurrency programming guide
단락을 참조합니다. 이는 교착 상태가 발생하는 연속 대기열에서 특히 중요하지만 동시 대기열의 경우에는 도 피해야합니다.
- 1. GCD에서 DispatchWorkItem을 중지하는 방법은 무엇입니까?
- 2. POSIX 쓰레드와 시그널
- 3. GCD에서 만든 스레드 수?
- 4. 오라클 쓰레드와 프로세스
- 5. Java 쓰레드와 MySQL
- 6. 관계는
- 7. 멀티 쓰레드와 세션 팩터
- 8. 안드로이드 쓰레드와 배터리 수명
- 9. 자바 쓰레드와 셧다운 훅
- 10. Java 쓰레드와 애플릿
- 11. 자바의 쓰레드와 서버
- 12. 쓰레드와 tkinter 파이썬 3
- 13. 자바에서 쓰레드와 버퍼
- 14. 안드로이드 쓰레드와 ArrayAdapter
- 15. POSIX 쓰레드와 시그널 마스크
- 16. 안드로이드 쓰레드와 Throwable
- 17. 안드로이드 쓰레드와 UI
- 18. 파이프와 메시지 큐의 차이점은 무엇입니까?
- 19. 누구나 GCD에서 NSThread를 사용하고 싶습니까?
- 20. ContentPane과 JPanel의 관계는 무엇입니까?
- 21. CTS와 CLS의 관계는 무엇입니까?
- 22. Xtext와 ANTLR의 관계는 무엇입니까?
- 23. tsconfig.json과 gulp.js의 관계는 무엇입니까?
- 24. Hadoop과 NoSQL의 관계는 무엇입니까?
- 25. repo와 git의 관계는 무엇입니까?
- 26. CloseWindow와 WM_CLOSE의 관계는 무엇입니까
- 27. 클래스와 유형의 관계는 무엇입니까?
- 28. Page.IsValid와 args.IsValid의 관계는 무엇입니까?
- 29. didReceiveMemoryWarning과 dealloc의 관계는 무엇입니까?
- 30. WPF와 Silverlight의 관계는 무엇입니까
# 2도 마찬가지입니다. 그렇지 않으면 globalQueue의 주 스레드에서 실행중인 대기열의'dispatch_sync (dispatch_get_main_queue ...')를 사용하여 교착 상태 (# 3)를 쉽게 만들 수 있기 때문입니다. – Xyand