2012-08-02 1 views
11

쿼트 문서는 말한다단일 스레드 모델이 UI를 주 스레드로 업데이트하는 데 사용되는 이유는 무엇입니까? 이 시작할 때 언급 한 바와 같이

각 프로그램은 하나 개의 스레드가 있습니다. 이 스레드는 "주 스레드"( Qt 응용 프로그램의 "GUI 스레드"라고도 함)라고합니다. Qt GUI는이 스레드에서 실행되어야합니다. 신청 절차

그리고 아이폰 OS의 주요 스레드에서 실행

안드로이드 문서는 말한다, 활동 및 다른 구성 요소와 마찬가지로

, 서비스,

백그라운드 스레드에서 UI 컨트롤 등을 업데이트하지 않는 것이 좋습니다. (예 : 타이머, 통신 등). 이는 식별하기가 때로는 매우 어려운 크래시의 원인 일 수 있습니다. 대신 을 사용하여 코드가 UI 스레드 (항상 "기본"스레드)에서 실행되도록합니다.

왜 단일 스레드 모델을 사용하여 UI를 업데이트합니까?

+0

복잡성이 증가하고 이점이 없습니다. http://stackoverflow.com/questions/5544447/why-are-most-ui-frameworks-single-threaded –

답변

20

짧은 답변은 디스플레이가 손상되지 않았 음을 확인하는 유일한 방법입니다.

긴 대답은 여러 스레드가 UI를 업데이트하여 교착 상태, 경쟁 조건 및 모든 종류의 문제가 발생한다는 것입니다. 이것은 여러 스레드가 UI에 닿을 수있게 해주는 Java의 AWT (다른 UI 시스템 중 하나)에서 가르쳐 왔던 고통스러운 교훈이었습니다. 예를 들어 this blog post을 참조하십시오.

+0

+ 1 블로그 게시물 링크 : – msk

+3

@MSK - 해당 게시물은 멋진 대화의 링크가 있습니다. 이벤트 대 스레드의 John Ousterhout. 불행히도, 그것은 죽은 연결입니다. 관심있는 사람들을 위해, [여기] (http://www.csd.uoc.gr/~hy527/papers/threads-ousterhout.pdf)를 포함하여 웹의 여러 곳에서 연설을 찾을 수 있습니다. –

+0

글쎄, 이제 블로그 게시물 자체가 죽은 링크입니다. 게시물 제목을 검색하여 [여기] (http://tecnologia.revistacocktel.com/multithreaded-toolkits-a-failed-dream/) 사본을 찾았습니다. _ "멀티 스레드 툴킷 : 실패한 꿈입니까?"_ –