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

업데이트 됨 Nov 29, 2018

해당 제품

Software

  • LabVIEW Full
  • LabVIEW Base
  • LabVIEW Professional

문의사항

재호출 VI, 템플릿 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)으로 설정되었는지 확인하십시오.

이 글이 도움이 되셨습니까?

도움 안됨