Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- C++
- 광유다
- mutex
- 세마포
- map
- Unity
- photon
- StartActivityForResult
- 동기화
- 게임개발
- Java
- 포톤
- 유니티
- dependencyResilutionManagement
- list
- 안드로이드스튜디오
- Vector
- 스핀락
- semaphore
- SpinLock
- unorderedmap
- 지크슈
- 유니티슈팅게임
- registerForActivityResult
- NotFoundException: String resource ID #0x0
- 뮤텍스
- 바이너리세마포
- unorderedset
- ARface
- unityAR
Archives
- Today
- Total
목록semaphore (1)
와와
[OS/ C++] 동기화를 위한 전략: 스핀락(spinlick), 뮤택스(mutex), 세마포(semaphore)
테이블이 한 개만 있는 식당이 있다고 가정해보자! 식당에 여러 손님이 동시에 들어와 한 테이블에 앉으려고 하면 굉장한 혼란이 발생할 것이다. 여기서 벌어질 수 있는 혼란 중의 하나로, 경쟁 조건( race condition )을 뽑을 수 있다. 경쟁 조건은 여러 프로세스/스레드가 동시에 같은 데이터를 조작할 때 타이밍이나 접근 순서에 따라 결과가 달라질 수 있는 상황을 의미한다. 그럼 경쟁 조건을 막기 위해선 어떻게 해야할까? 아주 간단하다. 하나의 스레드의 진입만 허용하고 그동안 다른 스레드의 진입을 금지하면 된다. 이것을 상호배제( mutual exclusion )라고 한다. 완벽한 동기화를 위해 상호 배제를 위한 방법 3가지를 알아보도록 하겠다! 식당 비유를 다시 생각해보자면 완벽한 동기화를 위해서..
개발/C++
2024. 2. 8. 17:00