재호출, 템플릿 및 다이나믹 VI의 차이점

업데이트 됨 Aug 25, 2020

해당 제품

소프트웨어

  • LabVIEW Full
  • LabVIEW Base
  • LabVIEW Professional

문의사항

재호출 VI, 템플릿 VI 및 다이나믹 VI를 사용하는 경우는 언제입니까? 이 세 가지 유형의 차이점은 무엇입니까?

해결책

재호출 VI :
재호출 VI는 같은 VI의 여러 인스턴스를 동시에 실행하고자 할 때 사용됩니다. VI가 재 입력 가능하지 않은 경우 VI에 대해 하나의 데이터 공간이 있습니다. 따라서 한 번에 하나의 호출자 만 VI를 실행할 수 있으므로 호출자는 VI를 사용하기 위해 "차례를 기다려야"할 수 있습니다. 이것은 VI의 기본 옵션이지만 VI를 재진입 가능으로 설정할 수 있습니다. 재진입에는 공유 및 사전 할당의 두 가지 유형이 있습니다.

공유 복제 재호출 실행 : 
공유 복제 재호출 실행(Shared clone reentrant execution) 옵션이 선택되면 VI는 데이터 공간 풀을 갖습니다 (복제 풀과 동일한 것). 호출 VI가 시작되면 처음에는 두 개의 복제본만 생성됩니다. 호출자는 이러한 데이터 공간 중 하나를 사용하지만 어떤 데이터 공간인지 모르기 때문에 후속 호출에서 다른 인스턴스가 될 수 있습니다. 동시 호출자 수만큼 풀에 데이터 공간 (복제본)이 충분하지 않으면 새 데이터 공간 (복제본)이 만들어져 풀에 추가됩니다. 여기서 "인스턴스 간 복제본 공유"에서 "공유"라는 단어는 시간이 지남에 따라 여러 호출자가 데이터 공간을 사용할 수 있음을 의미합니다. SubVI에 20 개의 호출이 있지만 최대 2 개의 호출이 동시에 발생하는 호출이 발생하면 풀에는 두 개의 데이터 공간 만 있고 20개의 호출간에 "공유"됩니다. 현재 필요에 따라 필요한 수의 복제본만 생성되기 때문에 메모리 사용이 최적화됩니다. 가장 빠른 실행과 최상의 메모리 최적화를 위해이 옵션을 사용하는 것이 좋습니다.

미리 할당된 재호출 VI :
미리 할당된 복제 재호출 실행(Preallocated clone reentrant execution) 옵션이 선택되면 각 호출자에게 고유 한 개인 데이터 공간 (및 복제본)이 제공됩니다. VI 호출이 20 번이면 호출 VI가 시작될 때 20 개의 복제본이 생성되어 풀에 추가됩니다. 호출 패턴이 위에 설명 된 것과 같은 경우에는 두 개만 동시에 사용 중일 수 있습니다. SubVI의 주어진 인스턴스에 대한 모든 호출이 동일한 복제본을 사용하는 것이 중요한 경우 (예 : SubVI가 호출에서 호출로 데이터를 보유해야하는 경우), 이 유형의 재호출 VI를 사용하십시오. 사용하려고 하는 복제본을 마지막으로 사용한 SubVI의 인스턴스를 결코 알지 못하기 때문에 공유된 복제본은 잘 동작하지 않으며, 저장된 정보가 SubVI 간에 예기치 않게 "혼선"합니다. "사전 할당됨"은 모든 호출에 대해 해당 호출에 대한 데이터 공간 및 복제본이 만들어 짐을 의미합니다. 사전 할당은 VI가 실행되기 전에 발생합니다. 동일한 VI의 여러 프런트 패널을 열려면 재진입 SubVI 옵션이 도움이되지 않습니다.

여러 번 열어보기 VI가 최상위 VI 인 경우 디스크의 최상위 VI를 고유 한 이름으로 임시 디렉토리에 복제하고 새 파일 인스턴스를 열 수 있습니다. SubVI는 복제 할 필요가 없으며 최상위 VI 만 복제 할 수 있습니다. 그런 다음 VI 서버를 사용하여 복사본을 열고 실행할 수 있습니다.


템플릿 VI :
다중 인스턴스 패널을 템플릿 VI로 만들고 템플릿에서 매번 파일을 열 수 있습니다. VI 템플릿은 .vit 확장자를 가진 VI입니다. 파일»새로 만들기»템플릿에서 시작 아래의 템플릿에서 새 VI를 생성 할 수 있습니다. 그러면 VI의 새로운 인스턴스가 생성되어 자체 메모리 공간이 생깁니다. 이들은 생성 될 때 다른 메모리 위치를 가지며 다른 VI를 만들기위한 시작점으로 사용됩니다. 그런 다음 새로 생성 된 VI가 재 호출 가능 여부를 구성해야합니다.


다이나믹 VI :
VI 서버로 VI와 VI 템플릿을 모두 열 수 있습니다. VI 서버는 VI를 동적으로 로드하고 실행하는 데 사용됩니다. SubVI를 사용하면 최상위 VI가 로드 될 때 SubVI의 코드와 데이터 공간이 로드됩니다. VI를 동적으로 로드 할 때, VI를 SubVI로 사용하지 않고 메인 프로그램이 호출 될 때 로드하는 대신 SubVI가 VI 서버에 의해 호출 될 때까지 로드되지 않습니다. 이렇게하면 시작 시 메모리가 절약됩니다.

추가 정보

VI를 재호출 옵션을 변경하려면 다음 단계를 실행하십시오:
  1. 파일(File) » VI 프로퍼티(VI Properties)로 이동하십시오.
  1. 항목(Category) » 실행(Execution)으로 이동하십시오.
  1. 재호출(Reentrancy) 옵션이 공유(Shared) 또는 미리 할당된(Preallocated)으로 설정되었는지 확인하십시오.