동기 및 비동기 NI-VISA 함수 중에서 선택하기

개요

이 문서는 NI-VISA 함수와 관련된 동기 및 비동기 용어에 대해 설명합니다. 어플리케이션에 어떤 함수를 선택할지 결정하는 데 유용한 정보입니다.

개요

동기 및 비동기는 NI-VISA 함수가 호출 스레드와 관련해서 어떻게 동작하는지를 나타내는 용어입니다. NI-VISA 함수를 동기적으로 실행하는 경우 호출 스레드에서 다른 코드를 실행할 수 없습니다. 많은 양의 데이터를 전송하거나 가능한 한 빨리 디바이스에서 데이터를 가져오거나 전달해야 하는 경우와 같은 일부 상황에서는 이 동작이 바람직할 수 있습니다.

하위 레벨에서는 인터페이스가 동기인지 비동기인지에 따라 호출 스레드가 잠기는 시간이 달라집니다. 쓰기 작업의 경우 ADE (Application Development Environment)에서 컴퓨터가 제공하는 기본 물리적 리소스로 데이터를 전송하십시오. 읽기 작업의 경우 디바이스의 물리적 리소스에서 ADE로 데이터를 전송하십시오. 이러한 전송은 모두 여러 계층의 메모리를 통과해야 합니다.

쓰기 작업의 경우 다음 시퀀스가 발생합니다.

  1. 호출 스레드가 잠깁니다.
  2. VISA 쓰기 함수와 관련된 데이터가 ADE에서 VISA 메모리로 전송됩니다.
  3. 폴링이 시작되어 VISA 쓰기와 관련된 모든 데이터가 VISA 메모리에서 하드웨어 리소스용 기본 드라이버로 전송되는지 결정됩니다.
  4. 전송이 완료됩니다.
  5. VISA 쓰기 함수가 반환됩니다.

읽기 작업의 경우 동일한 시퀀스가 발생하지만 순서가 반대입니다.

동기 작업의 경우 위의 4단계와 5단계 사이에 호출 스레드가 잠금 해제됩니다. 비동기 작업의 경우 위의 2단계와 3단계 사이에 호출 스레드가 잠금 해제됩니다. 어플리케이션을 위해 동기 및 비동기 중에서 선택하려면 쓰거나 읽는 데이터의 양과 어플리케이션에서 사용할 수 있는 스레드 수를 고려해야 합니다.

많은 양의 데이터를 가능한 한 짧은 시간 내에 전송해야 하는 경우 작업을 동기적으로 수행하는 것이 좋습니다. 이렇게 하면 호출 스레드가 하드웨어 리소스로 데이터를 전송하거나 하드웨어 리소스에서 전송하는 작업만 수행하기 때문입니다. 작업을 비동기적으로 실행하는 경우 호출 스레드가 어플리케이션의 다른 부분에 액세스할 수 있지만, 데이터가 하드웨어 리소스로 전송되었거나 하드웨어 리소스에서 전송되었는지 확인하는 데 더 오랜 시간이 걸립니다.

어플리케이션에서 사용할 수 있는 스레드 수가 병렬 프로세스 수에 비해 적을 경우 NI-VISA 작업을 비동기로 실행하면 어플리케이션의 다른 부분에서 호출 스레드를 더 빨리 사용할 수 있습니다. 작업을 동기적으로 실행하는 경우 호출 스레드가 NI-VISA 작업만 수행하기 때문에 가능한 한 빨리 작업이 완료되지만, 전반적인 어플리케이션 성능은 저하됩니다.

LabVIEW에서 동기 함수와 비동기 함수 중 하나를 선택하려면 아래의 LabVIEW 도움말 링크를 참조하십시오.