본문 바로가기

전체 글

(75)
[C++/서버] Thread Local Storage 보호되어 있는 글입니다.
[C++/서버/컴퓨터구조] 메모리 구조와 Atomic 결론 : 멀티스레드로 오면서 CPU 파이프라인과 메모리에 write가 적용되는 과정에서 발생하는 가시성 문제를 해결하기 위해서 atomic을 이용해서 동일 객체 상 동일 수정 순서를 보장해주는 식으로 메모리 상 대입의 순서를 보장한다. 이 과정에서는 다양한 메모리의 정책이 있는데 크게 3개로 나눌 수 있다. Sequentially Consistent (seq_cst) - 가장 엄격(컴파일러 입장에서 최적화 여지가 적다. = 직관적), 기본 설 Acquire-Release (acquire, release) Relaxed (relaxed) - 가장 자유(컴파일러 입장에서 최적화, 직관적이지 않음) [NC 면접 질문] 이전까지는 싱글 스레드를 기반으로 작업을 하는 환경이 많았기 때문에, 문제가 안 되던 CPU..
[C++/서버/컴퓨터구조] 캐시와 CPU 파이프라인 보호되어 있는 글입니다.
[C++/서버] Future 보호되어 있는 글입니다.
[C++/서버] Condition Variable 보호되어 있는 글입니다.
[C++/서버] Event 결론 : 이벤트라는 커널 오브젝트를 이용해서, 만약 스레드가 함수를 진행하기 위해서 어떤 상황이 필요한 경우 이 상황이 발생할 때까지 기다리게 해서 CPU의 사용량을 낮출 수 있는 프로그래밍 기법이다. 화장실 문이 열릴 때까지 대기 일단 자리로, 그리고 나중에 다시 랜덤하게 돌아오기 화장실 문 앞에서 대기할 직원 하나 두고 난 일자리로 돌아간 뒤, 일이 끝나면 직원이 나한테 알려주기 이제 마지막 방식을 알아보자. 직원은 사실 커널 오브젝트이다. 커널 오브젝트는 이 락이 풀리는 '이벤트'가 끝날 때까지 대기를 했다가 이 이벤트가 끝난 경우 그 자원을 기다리던 프로그램에 알려주는 식이다. 이벤트는 정말 간단하다. 화장실 문이 열린다와 닫힌다 이 두 상황이 있는 것이다. 화장실 안에는 사람이 있고 밖에는 기다..
[C++/서버] Sleep 보호되어 있는 글입니다.
[C++/서버] Spinlock 보호되어 있는 글입니다.