대부분의 UI 프레임 워크가 단일 인 이유는 무엇입니까?
예를 들어 Java Swing과 Android UI는 하나의 단일 UI 단일 한 단일 모델을 사용합니다. 프레임 워크 디자이너가 다른 모델보다 한글 모델을 선택한 이유는 무엇입니까?
다중적인 UI 모델이 더 복잡한 비용에도 불구하고 성능이 더 많은 성능을 제공하지 않습니다. 관련 버그가 스레드 심하기 때문에 후자가 큰 문제라는 것을 알고 있지만 단순성 이외의 one-스레드 모델에 다른 이점이 있는지 궁금합니다.
프레임 워크 디자이너가 다른 모델보다 한글 모델을 선택한 이유는 무엇입니까?
에서 말의 입 :
AWT는 처음에 일반 다중 다중 자바 라이브러리로 노출되었습니다. 그러나 자바 팀이 AWT와 사람들이 만난 교착 상태 및 인종에 대한 경험을 상상 보면서는 우리가 지킬 수없는 약속을하고있는 것을 지 향기 시작했습니다.
이 분석은 AWT의 플레이 상태와 전반적인 업계 경험을 검토 한 1997 년 Swing의 디자인을 통해 경험을 검토 중 하나에서 절정에 이르렀으며 Swing 팀의 권장 사항 인 Swing은 매우 다양한 멀티 스레딩 만 지원해야한다는 것을 확인합니다.
(전체 기사를 읽고 결정을 자세히 설명하고 똑같은 문제와 하나의 모델로의 그 인 인이 Xerox PARC에서 더 일찍 발견되었습니다.)
다중적인 UI 모델이 더 복잡한 비용에도 불구하고 성능이 더 많은 성능을 제공하지 않습니다.
GUI를 그리고 사용자 작업을 처리 (UI 프로그램이 수행하는 모든 것)는 2D 응용 프로그램에서 병목 현상이 발생하지 않습니다.
다중적인 UI 모델이 더 복잡한 비용에도 불구하고 성능이 더 많은 성능을 제공하지 않습니다.
추가 된 대부분의 경우에는 대부분의 경우에 더 많은 경우에 대부분의 경우에 이익이됩니다. 또한 UI 프레임 워크는 기본 OS 모델도 처리해야합니다. 물론, 프로그래머와는 거리가 먼 모델과 추상화를 중심으로 작동 할 수있는 경우에는 그럴 가치가 없습니다.
UI 임시를 업데이트하는 여러 번의 경우 발생하는 버그의 양은 대부분의 의미없는 성능 향상을위한 것보다 훨씬 클입니다 (약이있는 경우에 스레딩에는 잠금 및 동기화로 인해 자체 헤드가 있습니다. 을 선택하는 경우가 있습니다.)
이 경우에는 필요할 때만 명시 적으로 다중을 사용하는 것이 좋습니다. 대부분의 경우 UI에서 모든 것을 사용하여 많은 것을 얻지 못합니다. UI 상호 작용은 거의 병목 현상이 아닙니다.
아니, 아마 아닐 것이다. CPU에서 악성을 실행하려고합니다. GPU에는 이미 다양한 형태의 송신 처리가 많이 있습니다. 단순한 GUI 작업이 아니라 멋진 3D (음영, 반사 등)
교착 상태 예방이 전부라고 생각합니다.
Swing의 구성 요소는 기본적으로 제공되는 것들이 있습니다. UI가 다중 표준 인 경우 전체 앱은 일반적으로 안전한 방식으로 동작하는 모든 구성 요소에 의존해야하며, 모든 경우에 모호한 상황에서 교착 상태가 있습니다.
그래서 더 안전합니다.
뿐만 아니라 Windows Forms (& .Net), GTK, Motif 및 기타 여러 업체에서 동일한 디자인을 선택했습니다. Java가 상호 작용하는 기본 OS API에 의해이 결정을 내리게 궁금합니다. 확실히 SWT는 Windows Forms에 의해 이러한 상황에 처하게됩니다.
자세한 내용은 "EDT"를 시작하는 것이 좋습니다. http://en.wikipedia.org/wiki/Event_dispatching_thread
.NET의 경우 SwingWorker에 해당하는 것을 BackgroundWorker라고합니다.
이는 UI 애플리케이션의 특성 때문입니다.
입력 (마우스 또는 키보드)을 읽고 이벤트를 전달하고 처리하고 화면을 다시 그리도록해야합니다.
다중 단일 프로세스에서 시도하십시오.
참조 URL : https://stackoverflow.com/questions/5544447/why-are-most-ui-frameworks-single-threaded
'ProgramingTip' 카테고리의 다른 글
Scala.React의 상태는 어떻습니까? (0) | 2020.12.27 |
---|---|
F #의 거듭 제곱 연산자가 부동 소수점 숫자에만 작동하는 이유는 무엇입니까? (0) | 2020.12.27 |
OCaml 프로젝트를 구성하고 빌드하는 데 선호되는 방법은 무엇입니까? (0) | 2020.12.27 |
Quartz.NET 구성 파일에 대한 문서는 어디에 있습니까? (0) | 2020.12.27 |
Django REST 프레임 워크의 중첩 된 리소스에 필터를 적용해야합니까? (0) | 2020.12.27 |