2011-04-19 3 views
0

이것은 다소 광범위한 질문이지만 방금 애플리케이션 클래스를 완료 한 초급 중급 프로그래머이고 주제 중 하나는 멀티 스레딩입니다. 우리는 오랫동안 끌어 낸 프로세스 (데이터베이스에서 읽기 등)를 시작하는 버튼이있는 GUI를 만드는 작업과 관련된 다양한 과제를 수행했습니다.멀티 스레딩으로 해결할 수있는 성능 저하의 예

이 경우 우리는 처리를 수행하는 작업이 버튼의 누를 때 애플리케이션이 멈추지 않도록 다른 모든 스레드와 별도의 스레드에있는 단일 및 다중 스레드 버전을 작성합니다. 내 질문에

:

직장에서

오늘, 나는 한 특정 전자 메일을 찾으려는 하나 개의 특정 단어에 대한 나의 MS Outlook에서 검색; 불행히도 그 단어는 일반적인 것이었고 1 억개의 이메일이 나타났습니다. 중지 버튼이 있지만 아무 것도 누르지 않았습니다 ...

내 수업 경험에서 보면, 검색 프로세스를 자체 스레드에 배치하면 위의 문제가 발생하지 않을 수 있습니다. 분명히 마이크로 소프트는 그런 바보 같은 짓을하지 않을 것입니다 ...이 스레드가 만들어지지 않을 이유가 있습니까? 자체 스레드 인 경우 응용 프로그램이 중지되고 중지 단추를 누르는 것에 응답하지 않는 이유는 무엇입니까? (OS 관련 이유?).

이 모든 것은 관련이있는 경우 Windows XP 32 비트 이중 코어 시스템에있었습니다.

정말로, 나는 단지 멀티 스레딩이 어디서 생겨나고 어디에 적용해야 하는지를 더 잘 이해하고 싶습니다. 분명히 멀티 스레딩에 도움이되거나 잘리는 유명한 응용 프로그램의 예가 있습니까? 명확하게 구분할 수 있습니까?

감사합니다.

R

+0

"확실히 Microsoft는"바보 같은 짓을하지 않을 것입니다. ... 롤, 그리고 셜리라고 부르지 마라. – ray

답변

1

다른 스레드에서, 참으로, 탐색 이었다는 것을 확실히 가능하지만, 그 주 스레드에 결과를 전달하고 그들이 실제로하지 않았다 충분히 메인 스레드를 늦추지했다 그리기 요청에 응답 할 시간.

이 문제에 대해 알고있는 유일한 수정 프로그램은 검색 프로세스가 반환 할 수있는 결과의 수를 제한하는 것입니다. 결과 수를 제한하지 않으려면 메시지 창을 다른 스레드에 그립니다. 그러나 대부분의 gui 툴킷은 단일 스레드이므로 은 매우입니다. 게다가, 스레드는 (극단적 인 경우) 너무 많은 메모리를 차지하여 메인 GUI를 느리게 만들 수 있습니다.

0

앱 스플래시 화면이 표시 될 때마다 큰 표시기가 나타나며 별도의 스레드에서 발생합니다.

이것은 미학적 인 용도로 더 적합하지만 프로세스가 백그라운드에서로드되는 동안 기계가 멈추지 않는다는 것을 사용자가 이해하는 데 도움이됩니다.

관련 문제