멀티스레딩을 이용하는 어플리케이션은 다음을 포함한 많은 장점을 가지고 있습니다.

  • 더 효율적인 CPU 사용
  • 더 나은 시스템 신뢰도
  • 멀티프로세서 컴퓨터에서 향상된 성능

더 효율적인 CPU 사용

많은 LabVIEW 어플리케이션에서, 사용자는 인스트루먼트 또는 데이터 수집 디바이스로 동기화된 수집 호출을 합니다. 이런 호출은 종종 완료까지 시간이 많이 걸릴 수 있습니다. 싱글스레드 어플리케이션에서, 이런 동기화 호출은 수집이 완료될 때까지 LabVIEW 어플리케이션 내의 다른 태스크가 실행되는 것을 실질적으로 막거나 방해합니다. LabVIEW에서, 멀티스레딩은 이런 방해 작업을 예방합니다. 동기화 수집 호출이 한 스레드에서 실행되는 동안, 데이터 분석과 파일 I/O와 같이 수집과 관련이 없는 프로그램의 다른 부분은 다른 스레드에서 실행됩니다. 그러므로 수집이 완료될 때까지 기다리지 않고 수집 중에도 어플리케이션의 실행은 진행됩니다.

이런 방식으로, 멀티스레드 어플리케이션은 프로세서의 효율성을 최대화합니다. 어플리케이션의 스레드 중 하나라도 실행할 준비가 된 경우 프로세서가 작동하기 때문입니다. 파일을 읽고 쓰거나, I/O를 수행하거나, 작업을 위해 사용자 인터페이스를 폴링하는 모든 프로그램은 멀티스레딩을 사용할 경우 여러 이점이 있습니다. 이러한 동기화 작업을 수행하는 동안 CPU를 더 효율적으로 사용할 수 있기 때문입니다.

더 나은 시스템 신뢰도

프로그램을 다른 실행 스레드에서 분리함으로써 프로그램의 한 작업이 다른 중요한 작업에 나쁜 영향을 미치지 않도록 할 수 있습니다. 가장 일반적인 예는 사용자 인터페이스가 더욱 시간에 결정적인 작업에 영향을 미치는 경우입니다. 화면 업데이트 또는 사용자 이벤트에 대한 응답은 종종 프로그램의 실행 속도를 줄이기도 합니다. 예를 들어, 윈도우를 이동하거나, 크기를 조정하거나, 다른 윈도우를 열면, 프로세서가 사용자 인터페이스 이벤트에 응답하는 동안 프로그램 실행이 사실상 중단됩니다.

LabVIEW 멀티스레드 어플리케이션에서는 사용자 인터페이스 작업이 지정된 사용자 인터페이스 스레드에 할당되며 프로그램의 데이터 수집, 분석, 파일 I/O 부분은 다른 스레드에서 실행될 수 있습니다. 사용자 인터페이스 스레드에 다른 더욱 시간에 결정적인 작업보다 낮은 우선순위를 주어 사용자 인터페이스 작업이 CPU가 컴퓨터 기반의 인스트루먼트에서 데이터를 수집하는 등의 더욱 중요한 작업을 실행하는 것을 방해하지 못하게 합니다. 사용자 인터페이스에 낮은 우선순위를 두면 데이터 수집과 프로세싱, LabVIEW의 성능, 전반적인 컴퓨터 성능을 포함한 전체 시스템 신뢰도가 향상됩니다. 예를 들어, 연산자가 윈도우를 이동하여도 데이터를 잃지 않습니다.

멀티스레딩이 더 나은 시스템 신뢰도를 제공하는 다른 예는 초고속 데이터 수집을 수행하고 결과를 디스플레이할 때입니다. 화면 업데이트는 연속적인 초고속 데이터 수집과 같은 다른 작업에 비해 느린 경우가 많습니다. 단일스레드 어플리케이션에서 많은 양의 데이터를 초고속으로 수집하고 수집된 모든 데이터를 그래프에 디스플레이하려는 경우, 프로세서가 화면 업데이트에 너무 많은 시간을 소비하게 되므로 데이터 버퍼가 오버플로우될 수 있습니다. 데이터 버퍼가 오버플로우되면 데이터를 잃게됩니다.

그러나 사용자 인터페이스가 해당 스레드에 분산된 LabVIEW 멀티스레드 어플리케이션에서는 데이터 수집 작업이 다른 상위 우선순위 스레드에 상주할 수 있습니다. 이 경우, 데이터 수집과 디스플레이는 독립적으로 실행되므로 데이터 수집은 연속적으로 실행되고 데이터를 중단 없이 메모리로 보낼 수 있습니다. 디스플레이는 최대한 빨리 실행되며, 실행 시 메모리에서 찾는 모든 데이터를 그립니다. 수집 스레드가 디스플레이 스레드보다 앞서 실행되므로 화면이 업데이트될 때 데이터를 잃지 않습니다.

멀티프로세서 컴퓨터에서 향상된 성능

멀티스레딩의 가장 큰 장점 중 하나는 멀티프로세서 컴퓨터의 성능을 이용할 수 있다는 것입니다. 현재 상당수의 고성능 컴퓨터는 추가적인 계산 능력을 위해 둘 이상의 프로세서를 제공합니다. 멀티스레드 어플리케이션은 이러한 컴퓨터의 장점을 최대한 이용할 수 있습니다. 여러 스레드가 동시에 실행되는 멀티스레드 어플리케이션에서, 각 프로세서는 다른 스레드를 실행할 수 있습니다. 멀티프로세서 컴퓨터에서는 어플리케이션이 실제로 병렬 작업 실행을 할 수 있으므로 전반적인 시스템 성능이 향상됩니다.

반대로 단일스레드 어플리케이션은 하나의 프로세서에서만 실행되므로 여러 프로세서를 활용하여 성능을 향상시킬 수 없습니다. 그러므로 멀티스레드 OS 및/또는 멀티프로세서 컴퓨터에서 최대한의 성능을 얻으려면 멀티스레드 어플리케이션을 사용해야 합니다.