개요멀티 스레드 환경에서는 공유 변수(데이터) 에 대한 경쟁에 대한 처리 매커니즘이 필요하다그를 위해, lock 을 이용한다 lock 을 이용하는데 사용되는 3가지 개념을 알아두자Lock 구현 이론(임계구역을 화장실이라 생각하자)존버 메타 (화장실 앞에서 대기)스핀락이 그 예시이다.busy waiting 이지만, user level 에서만 동작하므로, 다른 스레드가 lock 점유 시간이 짧을 것이라는 확신이 있다면, 좋은 선택이 될 것이다 랜덤 메타 (일단 자리로 돌아갔다올게)잠시 슬립하여 CPU 타임 슬라이스를 포기하는 것이다.이 메타는, 불확실성을 갖고있다. 슬립 사이에 다른 스레드가 들어갈 확률 존재한다갑질 메타 (화장실이 비면 종업원에게 부탁하는거)이벤트 사용으로 구현한다. (C++ 11 에서는 ..
mutex 기반으로 작성하고, condition variable로 단점을 보완해 본다mutex 기반틀#include templateclass LockStack{public: LockStack() {} LockStack(const LockStack&) = delete; LockStack& operator=(const LockStack&) = delete; private: stack _stack; mutex _mutex;};push 연산 void Push(T value) { lock_guard lock(_mutex); _stack.push(std::move(value)); }lock_guard 이용cf) 이동이 가능한 것들은, move를 이용해서 빠른 연산 지원pop 연산고전적으로는 empty() 연..
- Total
- Today
- Yesterday
- S1
- PS
- 개발 공부 자료
- 연관관계 편의 메서드
- reader-writer lock
- Java
- pocu
- OOP
- core c++
- 이진탐색
- generic swap
- 엔티티 설계 주의점
- S4
- thread
- C
- condition variable
- 백준
- Spring MVC
- 톰캣11
- Dispatcher Servlet
- 논문추천
- 객체 변조 방어
- JPA
- tomcat11
- servlet
- generic sort
- Memory
- sleep lock
- tree
- CPU
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |