본문 바로가기

Game Server

(28)
[C++/서버] Lock 결론부터 말하면, interlock이나 atomic은 기본 자료형에 대해서 효과적이고 적절한 기능이기 때문에, 컨테이너나 함수 등에서는 우리는 Lock이라는 것을 사용하여 멀티스레드 상에서 상호 배제를 구현해낼 수 있으며, 대표적인 것으로는 mutex가 있다. 하나의 벡터가 있다고 가정해보자. 즉 하나의 컨테이너가 공유자원이 되는 것이다. // FrokEngine::int32 -> __int32; std::vector v; void push() { for (size_t i = 0; i < 100000; i++) { v.push_back(i); } } int main() { std::thread t1(push); std::thread t2(push); t1.join(); t2.join(); return 0..
[C++/서버] Atomic 보호되어 있는 글입니다.
[서버] 스레드 생성 보호되어 있는 글입니다.
[서버] 멀티스레드 멀티스레드는 서버 입장에서는 필수적인 요소임. 문제는 멀티스레드 프로그래밍을 하는 순간부터 굉장히 많은 문제가 생김. 예로 들어 내가 타이쿤 게임을 한다고 가정하자. 그리고 한식, 일식, 그리고 좀 규모가 큰 패밀리 레스토랑이 있고, 각각 1,1,2명의 직원이 있다, 그리고 내 손은 하나고 이 직원을 한 번에 한 손으로 한 번씩 명령을 내릴 수 있다. 물론 손 빠른 사람은 이런 직원들을 마치 손이 4개인 것 처럼 움직일 수 있겠지만 만약 한 식당이 바쁘다면 다른 직원들이 관리가 되지 않을 것이다. 컴퓨터도 마찬가지이다. 다양한 프로그램을 실행하면서 그 안에서 다양한 일이 일어나게 되는데, 메모리에 올라갔다고 해서 실행되는 것이 아니라, CPU가 CPU 코어(프로세서, 손)에 각 프로세스(각 식당)의 스레..