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() 가 모두 완료 후 실행 |
[출처]
728x90