본문 바로가기

Design Pattern

RaceContion을 회피하기 위한 디자인 패턴 종류

728x90
반응형

# RaceCondition을 회피하지 위한 디자인 패턴

레이스 컨디션을 피하는 데 도움이 되는 디자인 패턴은 일반적으로 동기화 또는 상호 배제를 포함한다.
1. Monitor Pattern: 이 패턴은 동기화 코드와 함께 공유 리소스를 캡슐화한다. 한 번에 하나의 스레드만 모니터의 어떤 메서드를 실행할 수 있어 레이스 컨디션을 방지한다.

 

GitHub - Nanninggu/MornitorPattern: About MornitorPattern

About MornitorPattern. Contribute to Nanninggu/MornitorPattern development by creating an account on GitHub.

github.com

2. Singleton Pattern: 이 패턴은 클래스가 하나의 인스턴스만 가지도록 보장하고 이에 대한 전역 접근 지점을 제공한다.

경쟁 조건을 피하기 위해 인스턴스 생성을 스레드로부터 안전하게 만들 수 있다.
3. 락(Locks): 락은 코드의 중요한 섹션을 보호하는 데 사용되며, 한 번에 하나의 스레드만 그 코드를 실행할 수 있도록 한다.
4. Semaphore Pattern: 이 패턴은 카운터를 사용하여 공유 리소스에 대한 접근을 제어한다. 이를 통해 여러 스레드가 일정한 한도 내에서 리소스에 접근할 수 있다.  
5. Read-Write Lock Pattern : 이 패턴은 여러 스레드가 공유 리소스를 읽을 수 있게 하지만 한 번에 하나만 쓸 수 있게 한다.

이는 읽기가 쓰기보다 빈번할 때 성능을 향상시킬 수 있다. 

 

GitHub - Nanninggu/Read-Write-Lock-Pattern: About Read-Write Lock Pattern

About Read-Write Lock Pattern. Contribute to Nanninggu/Read-Write-Lock-Pattern development by creating an account on GitHub.

github.com

6. Atomic Variables and Operations: 원자 변수와 연산은 변수를 원자적으로(단일, 불가분의 연산으로) 읽고, 쓰고, 업데이트하는 방법을 제공하여 레이스 컨디션을 피하는 데 도움이 된다.  
주의할 점은, 디자인 패턴의 선택은 애플리케이션의 특정 요구 사항과 제약 조건에 따라 달라진다.

 

- 끝 -

728x90
반응형

'Design Pattern' 카테고리의 다른 글

MVCC (MultiVersion Concurrency Control) Pattern  (0) 2024.06.01
Chain-of-Responsibility-Pattern  (0) 2024.05.29
Template-Method-Pattern  (0) 2024.05.27
Bridge-Pattern  (0) 2024.05.25
Observer-Pattern  (0) 2024.05.25