| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Spin Lock
- localstorage
- Binary Lifting
- DP
- JavaScript
- Behavior Design Pattern
- SCC
- ccw 알고리즘
- 이분 탐색
- Express.js
- 벨만-포드
- Strongly Connected Component
- Github
- 2-SAT
- 비트마스킹
- 강한 연결 요소
- Lock-free Stack
- 비트필드를 이용한 dp
- PROJECT
- 자바스크립트
- trie
- 그래프 탐색
- Prisma
- R 그래프
- 트라이
- LCA
- 게임 서버 아키텍처
- 최소 공통 조상
- map
- 분리 집합
- Today
- Total
목록Lock-free Stack (2)
dh_0e
Lock-Free Stack with Smart PointerGarbage Collector의 기능을 스마트 포인터로 대체하는 방법사실 스마트 포인터가 내부적으로 lock을 사용하기 때문에 엄밀히 말해서 Lock-Free 방식은 아님shared_ptr ptr;atomic_is_lock_free(&ptr); 로 CPU가 lock을 사용하는지 검사해 보면 false 나옴templateclass LockFreeStack{ struct Node { Node(const T& value) : data(make_shared(value)), next(nullptr) {} shared_ptr data; shared_ptr next; };public: void Push(const T& value) { shared_..
Lock-Free Stack with PopCountLock 없이 스택 구현lock-free 라도 완전히 대기를 안 할 순 없음 (Atomic 변수, CAS 함수 사용)DeadLock이 아닌 LiveLock 비슷한 상황이 발생할 수 있음데드락 (Deadlock): 모두가 잠들어서 아무도 움직이지 않음. (진행도 0, CPU 0%)라이브락 (Livelock): 모두가 미친 듯이 제자리걸음을 하고 있음. (진행도 0, CPU 100%)사실상 Lock-Free를 사용했기 때문에 LiveLock이 일어날 순 없지만 각각의 스레드 입장에서 Starvation이 심해지면 LiveLock처럼 느껴질 수 있음templateclass LockFreeStack{ struct Node { Node(const T& valu..