취소
다음에 대한 결과 표시 
다음에 대한 검색 
다음을 의미합니까? 

큐에 대해 질문드립니다.

안녕하세요. 큐에 대해서 잘모르는 부분이 많아 궁금해서 질문드립니다. 또한 큐가 사용되는 소스에서 메모리 사용 증가 및 렉이 발생할 수 있는 여지가 있는지 궁금해서 올립니다.

 

1. '최대 큐 크기'를 설정하기 위해서는 어떻게 해야하는가?(질문이 너무 광범위한 것 같아 죄송합니다)

2. 설정된 '최대 큐 크기'가 들어오는 data에 비해 작게 또는 크게 설정했을 경우 생길 수 있는 문제점이나 현상은 어떤 것이 있는가?

3. 큐 해제를 안 했을 경우 무슨 문제가 생길 수 있는가?(큐 얻기가 루프(while문)안에 있지 않으면 큐 해제를 하지 않아도 되는건지?, 장기간 실행되는 어플리케이션이기 때문에 루프안에 있지 않아도 큐 해제를 사용해야 하는건지 궁금합니다.)

 

-소스 부분입니다-

소스를 올려드리고 여쭤보고 싶지만 사정상 말로 간략하게 설명하겠습니다.(큐를 사용한 부분)

20msec마다 '손실있는 큐에 추가'를 통해서 data를 큐에 추가하고 일정 카운트가 될때마다 '큐 비우기'를 통해서 data를 뽑아내어 사용하고 있습니다. 임의로 설정한 '최대 큐 크기'를 잡고 data가  일정 카운트가 되면 큐비우기를 통해서 data를 뽑아내고 있으며 큐비우기 동작하는 루틴은 500msec로 돌고 있습니다. 

 

즉, 임의로 크기를 잡은 큐에 20msec마다 원소를 추가하고, 일정 카운트가 되면 큐에 있던 원소를 큐비우기를 통하여 뽑아내어 사용하고 있습니다. 사실 소스상에서 렉이 발생하는 부분이 있는데 혹시 큐해제를 안해서 렉이 발생하는 부분이 있는지 궁금해서 여쭤봅니다.

0 포인트
1/3 메시지
2,486 조회수

1. Obtain Queue Function을 보시면, max queue size 입력 터미널이 있습니다. https://zone.ni.com/reference/en-XX/help/371361R-01/glang/create_queue/

2. 큐의 크기는 데이터 생성 및 소비 속도가 가변적일 때 중요합니다. 생성 및 소비 속도가 언제나 일정하다면 큐의 크기가 작아도 문제가 업습니다. 하지만, 생성측의 데이터 생성 속도가 급격히 커진다면 임시로 큐에 저장해 두어야 합니다. 이 때 크기가 충분하지 않다면, 정상적으로 데이터를 생성할 수 없습니다.

3. 루프 내에서 큐 해제를 할 필요는 없습니다. 이런 경우 큐에 데이터가 점점 누적되는 상황을 떠올릴 수 있을 것 같습니다. 즉, 생성되는 속도에 비해 소비측의 속도가 따라가지 못하는 상황으로 보입니다. Get Queue Status 함수를 사용하면 큐에 저장된 데이터가 몇개인지 확인할 수 있습니다.

2/3 메시지
2,408 조회수

LabVIEW 최신 버전(2016 이후버전)부터는 Channel Wire라는 기능이 추가되어서 Queue 운영과 동일한 기능을 좀 더 쉽게 구현하실 수 있습니다.

"Queuing 방식"과 더불어서 "Channel Wire" 방식도 검토해보시면 좋을 것 같습니다.

 

[LabVIEW][랩뷰] Channel Wire 사용하기 동영상 강좌
https://www.youtube.com/watch?v=a3RbpVgUN_Q&t=20s

0 포인트
3/3 메시지
2,383 조회수