C#

운영체제에서 제공하는 다양한 동기화 장치들에 대한 설명

이쥬우 2023. 11. 4. 20:30
728x90
동기화 설명
뮤텍스 공유 자원에 대해 오직 하나의 스레드 접근만 허용 acquire(&mutex); // 공유자원 잠금
Func(); // 임계 구역
Releaase(&mutex); // 공유자원 해제
세마포어 공유 자원에 대해 여러 개의 스레드가 동시 접근 가능 P(S) { // P연산 (임계 구역에 들어가기 전 수행)
          while S <= 0; // 대기(최초 S값은 n)
           S--; // 점유
         }
V(S) { // S연산 (임계 구역에서 나올 때 수행)
          S++; // 해제
         }

*최초 S 값이 동시 접근 가능한 thread 수
이벤트 하나의 스레드가 특정 작업을 완료 후, 이벤트를 발생시켜 다른 T스레드가 작업을 이어갈 수 있도록 함 Thread1{
WaitForSingleObject() // 이벤트 핸들 대기
Func1(); // Thread2의 SetEvent() 이후 동작
}

Thread2 {
Func2();
SetEvent() // 이벤트 핸들 Signaled
}
배리어 모든 스레드가 배리어에 도착해야 다음 단계로 진행 A(); // Multi-thread 동작
Barrier(); // threads 동작 완료까지 대기
B(); // A() 가 모두 완료 후 실행

 

[출처]

https://www.samsungsds.com/kr/insights/1233713_4627.html?referrer=https://www.samsungsds.com/global/ko/news/story/1203227_2919.html

728x90