C#

Command 패턴

monstro 2025. 1. 22. 11:42
728x90
반응형

이전 포스트에서 스레드의 양이 늘어나면 막대한 부하가 발생하여

결국 싱글 스레드를 사용하는 것보다 못한 작업효율이 나타난다 하였습니다.

그 이유를 정리하면 다음과 같습니다.

 

1) 발생하고 있는 문제

 

이와 같은 문제가 발생하는 이유스레드가 작업을 받음과 동시에 이를 처리까지 수행하기에 발생합니다.
이런 상황에 추가적으로 lock을 통해 다른 스레드의 자원 점유를 막아 

하나의 스레드만을 이용하여 작업을 수행하므로 대기하는 스레드들이 쌓이게 되어

결국 대기가 길어지는 비효율적인 상황이 발생하게 됩니다.

 

2) 해결 방법

 

따라서 이를 해결하기 위해 다른 스레드들은 작업을 받게 되면 Job Queue에 작업을 기록하고,
기록된 작업을 전문적으로 처리하는 스레드를 만들어 해당 작업을 처리하게끔 수정하겠습니다.

 

3) Command 패턴

이제 개선 사항대로 수정을 거듭하게 된다면 결국 Command Pattern을 사용하는 것과 같습니다.

 

https://refactoring.guru/ko/design-patterns/command

 

커맨드 패턴

/ 디자인 패턴들 / 행동 패턴 커맨드 패턴 다음 이름으로도 불립니다: 액션, 트랜잭션, Command 의도 커맨드는 요청을 요청에 대한 모든 정보가 포함된 독립실행형 객체로 변환하는 행동 디자인

refactoring.guru

 

바로 위의 경로에서 발췌한 핵심은 다음과 같습니다.

 

현재 Job Queue에 스레드들이 해야 할 작업을 기록하고

이 작업들을 Worker Thread를 통해 실행해야 하므로 Command 패턴을 사용하는 것이 이상적입니다.

728x90
반응형

'C#' 카테고리의 다른 글

JobQueue #2  (0) 2025.01.22
JobQueue #1  (0) 2025.01.22
채팅 테스트 #2  (0) 2025.01.21
채팅 테스트 #1  (0) 2025.01.21
Packet Generator #6  (0) 2025.01.20