
저는 Windows XP의 Matlab에서 많은 시뮬레이션을 하고 있습니다. 일반적으로 나는 다른 인스턴스에서 작업을 수행하는 동안 긴 시뮬레이션을 실행하는 Matlab을 항상 하나 열어 둡니다.
몇 가지 성가심이 있습니다. 실수로 작업 표시줄에서 "작업 중인" 창 이름을 클릭하면 계속 노란색으로 표시됩니다(한 시간 정도). 실수로 마우스 오른쪽 버튼을 클릭하면 상황에 맞는 메뉴가 표시되지만 사라지지는 않습니다. 다른 창문을 가리는 것이 가장 짜증나는 일입니다.
계산을 중단하지 않고 상황에 맞는 메뉴를 사라지게 하는 방법에 대한 팁이 있는지 궁금합니다.
기본적으로 영원히 다음과 같이 보일 것입니다.
wait(0.1)
지금까지 나는 코드에 몇 가지 명령을 넣으면 이를 방지할 수 있지만 계산 속도가 엄청나게 느려진다는 것을 배웠습니다 . 그러므로 나는 그것을 선택 사항으로 생각하지 않습니다.
답변1
기본적으로 Matlab은 사용자 인터페이스 스레드에서 시뮬레이션을 실행한다고 가정합니다. 따라서 시뮬레이션하는 동안 UI와 관련된 작업을 처리할 시간이 없습니다.
이 문제를 해결하려면 Matlab에 새 스레드에서 시뮬레이션을 실행하도록 지시해야 합니다. 나는 이것에 대해 SO에서 몇 가지 비트를 발견했습니다.
Google에서 찾은 정보도 다음과 같은 방향을 가리키는 것 같습니다.병렬 컴퓨팅 도구 상자.
답변2
이는 기본적으로 Windows 디자인의 부산물입니다. 응용 프로그램은 UI 이벤트에 대한 응답으로 "메시지"를 수신하고 창 다시 그리기, 크기 조정 등과 같은 작업을 수행하는 것은 응용 프로그램에 달려 있습니다.
Windows는 UI 클릭 등과 같은 이벤트에 대한 응답으로 응용 프로그램에 적절한 "메시지"를 보내지만 응용 프로그램은 이를 완전히 무시할 수 있으며 일반적으로 잘못 설계/포팅된 응용 프로그램에서는 그렇게 할 수 있습니다.
대화형을 "느끼도록" 설계된 응용 프로그램은 A) 이러한 메시지를 처리하기 위해 다양한 순간에 수행 중인 작업을 중단하거나 B) 실제 작업을 수행하는 별도의 스레드를 갖습니다. "대화형 느낌"이 일부 응용 프로그램의 디자인 우선 순위가 아닌 부분을 알 수 있으며 응용 프로그램이 실제로 자신의 프로그램을 실행하기 위한 개발 환경인 경우 "대화형 느낌"에 대한 책임은 사용자에게 있습니다. 나는 Visual Studio를 가지고 놀았고 실수로 끝없는 루프를 생성하여 응용 프로그램의 CPU 사용량이 최대 100%까지 증가하는 프로그램을 실행했는데 UI와 비슷한 일을 했습니다.
지금은 이 프로그램의 이름이 생각나지 않지만, 많은 Linux 데스크톱에서와 같이 "다중 작업 공간" 작업을 수행할 수 있는 몇 가지 프로그램이 있습니다. 이러한 프로그램을 사용하여 MATLAB 인스턴스를 별도의 작업 공간에 배치할 수 있으면 실수로 클릭하는 것을 방지하는 데 도움이 될 수 있습니다.