큐(Queue)는 데이터를 저장하고 관리하는 자료구조 중 하나이다.
큐는 "선입선출" (First-In-First-Out, FIFO) 원칙에 따라 동작한다.
이는 먼저 추가된 항목이 먼저 제거되는 방식을 의미한다.
C#에서는 System.Collections.Generic
네임스페이스에서 Queue<T>
클래스를 제공하여 큐를 구현할 수 있다.
리어 : 값이 들어가는 방향
프론트 : 값이 나오는 방향
①Enqueue : 리어 방향으로 데이터 삽입
②Dequeue : 프론트 방향으로 데이터 추출
③Peek : 프론트의 값을 추출 (Dequeue로 빠져나올 값)
④Count: 큐에 저장된 항목의 수를 가져옵니다.
⑤Clear(): 큐의 모든 항목을 제거합니다.
사용처
①우선순위가 같은 작업 예약(프린터의 인쇄 대기열)
②은행 업무
③콜센터 고객 관리 대기 시간
④프로세스 관리
⑤너비 우선 탐색(BBS) 구현
⑥캐시 구현
⑦CPPU 스케줄링
⑧데이터 버퍼
⑨오브젝트 pool
상단은 기본적인 큐 사용법을 보여주는 예시이다.
:모바일 환경에서는 데이터를 넣고 빼는 작업 자체가 부담이 될 수 있다.
또한, 프로세스가 많이 사용되면 느려짐.
생성과 소멸이 반복되면 렉이 많이 발생.
이에 따라, 많이 사용되는 기능이 pool(사용할 데이터들을 한번에 가져온 후에 원할 때 추출)
pool : 데이터를 사용 후, 삭제하는 것이 아니라 다시 큐에 집어 넣음
단, 이 경우에 데이터를 탐색해야 할 때, 큐 내부를 다 찾아봐야 한다는 단점이 있다.
⑴ 해결법 1 : 큐를 타입별로 여러 개를 생성하여 따로 보관한다.
⑵ 해결법 2 : 리스트에 넣어서, Index로 꺼내온다.
⑶ 코딩 환경, 프로그램 환경에 따라 퍼포먼스가 좋은 방법을 선택하면 된다.
요약
GetNumber : Enqueue를 이용한, 값 반환
ReturnNumber : Dequeue를 이용하여, 사용값 다시 저장
Tip. System.Threading.Thread.Sleep(100); 함수는 콘솔창의 출력을 늦추는 함수이다.