C# - 큐

양규빈·2023년 7월 10일
0

C# 공부

목록 보기
10/30

개요

큐(Queue)는 데이터를 저장하고 관리하는 자료구조 중 하나이다.
큐는 "선입선출" (First-In-First-Out, FIFO) 원칙에 따라 동작한다.
이는 먼저 추가된 항목이 먼저 제거되는 방식을 의미한다.

C#에서는 System.Collections.Generic 네임스페이스에서 Queue<T> 클래스를 제공하여 큐를 구현할 수 있다.

리어 : 값이 들어가는 방향
프론트 : 값이 나오는 방향

①Enqueue : 리어 방향으로 데이터 삽입
②Dequeue : 프론트 방향으로 데이터 추출
③Peek : 프론트의 값을 추출 (Dequeue로 빠져나올 값)
④Count: 큐에 저장된 항목의 수를 가져옵니다.
⑤Clear(): 큐의 모든 항목을 제거합니다.

사용처
①우선순위가 같은 작업 예약(프린터의 인쇄 대기열)
②은행 업무
③콜센터 고객 관리 대기 시간
④프로세스 관리
⑤너비 우선 탐색(BBS) 구현
⑥캐시 구현
⑦CPPU 스케줄링
⑧데이터 버퍼
⑨오브젝트 pool


## 코드 및 세부설명

상단은 기본적인 큐 사용법을 보여주는 예시이다.

Queue의 활용

:모바일 환경에서는 데이터를 넣고 빼는 작업 자체가 부담이 될 수 있다.
또한, 프로세스가 많이 사용되면 느려짐.
생성과 소멸이 반복되면 렉이 많이 발생.

이에 따라, 많이 사용되는 기능이 pool(사용할 데이터들을 한번에 가져온 후에 원할 때 추출)

pool : 데이터를 사용 후, 삭제하는 것이 아니라 다시 큐에 집어 넣음
단, 이 경우에 데이터를 탐색해야 할 때, 큐 내부를 다 찾아봐야 한다는 단점이 있다.
⑴ 해결법 1 : 큐를 타입별로 여러 개를 생성하여 따로 보관한다.
⑵ 해결법 2 : 리스트에 넣어서, Index로 꺼내온다.
⑶ 코딩 환경, 프로그램 환경에 따라 퍼포먼스가 좋은 방법을 선택하면 된다.

  • for문으로 Queue에 값을 저장
  • GetNumber로 큐 내부에 저장된 값을 재사용을 위해서 반환.
  • 큐 내부에 값이 없을 경우에는 값을 생성

  • ReturnPool함수를 이용하여 빠져나간 값을 다시 집어 넣음.
  • For문으로 Pool환경을 이용한 1~100까지 사용 값 구현.
    ㄴGetNumber로 값 출력
    ㄴ확률에 의거한 값 재사용

요약
GetNumber : Enqueue를 이용한, 값 반환
ReturnNumber : Dequeue를 이용하여, 사용값 다시 저장

Tip. System.Threading.Thread.Sleep(100); 함수는 콘솔창의 출력을 늦추는 함수이다.

profile
훌륭한 개발자를 꿈꾸는 중입니다

0개의 댓글