본문 바로가기

전체 글

(74)
[C++/서버] DeadLock 보호되어 있는 글입니다.
[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 코어(프로세서, 손)에 각 프로세스(각 식당)의 스레..
[Windows] 핸들 테이블 결론 : 커널 오브젝트는 핸들 테이블이란 자료구조를 생성해서 핸들을 관리한다. 핸들을 인자로 취하는 함수를 호출할 땐 Create류 함수를 호출하며, 핸들을 삭제할 경우 CloseHandle 함수를 이용한다. OS는 프로세스가 초기화되면 프로세스를 위해서 커널 오브젝트 핸들 테이블을 할당한다. 이러한 핸들 테이블은 유일하게 커널 오브젝트를 의해서만 사용된다. 그리고 이 핸들 테이블의 개발 방식이나, 관리 방법 등은 어떤 구체적인 문서화가 되어있지 않다. 간단하게 이런 식으로 있겠구나 하고 넘어가셔도 된다. 이 테이블은 아래와 같은 식으로 커널 오브젝트에 대한 포인터, 액세스 마스크, 플래스로 구성된다. 인덱스 커널 오브젝트의 메모리 블록을 가리키는 포인터 액세스 마스크(각 비트별 플래그 값을 가지는 DW..
[Windows] 커널 오브젝트란? 결론 : 커널 오브젝트는 커널에 의해 생성되는 간단한 메모리 블록 커널 오브젝트는 커널에 의해 생성되는 간단한 메모리 블록이다. 그리고 윈도우 운영체제에는 이러한 커널 오브젝트가 다양하게 존재한다. (ex. 이벤트 오브젝트, 파일 오브젝트, IOCP 오브젝트 등 - 그 외 타입은 WinObj이란 툴을 통해서 확인 가능하다.) 그리고 이러한 오브젝트들은 다양한 함수를 통해서 생성된다. 이 메모리 블록은 오직 커널에 의해서만 구조체로 접근이 가능하다. 그리고 이 구조체는 보안 디스크립터, 사용 카운트(Usage Count)를 가지고 있다. 하지만 그 외 값들은 오브젝트 타입마다 굉장히 다양하다. 예로 들어, 프로세스 오브젝트의 경우는 PCB가 가지고 있어야할 Process ID, 기본 우선 순위, 종료 코드..
[언리얼 엔진] 월드와 액터 월드 월드란? 언리얼 엔진 뷰포트 윈도우에 보이는 작업 공간을 통해 투영되고 있는, 컴퓨터 안의 가상 세계이다. 월드는 게임 컨텐츠를 구동하기 위해 필요한 필수적인 환경이며, 공간, 시간, 물리, 렌더링을 제공한다. 공간이란? 공간은 가상 세계를 구성하는 3차원의 영역이다. 게임 컨텐츠를 구성하는 요소들은 월드내에 반드시 존재해야 하는데, 이를 위한 Transform이라는 구조체를 제공하며, 기본 단위는 cm이다. 언리얼에게 시간이란? 가상 공간 안에 흐르는 시간을 말한다. 가상 세계에서 시간은 현실 세계와 동일하게 흘러가지만, 멈출수도, 다시 재개할 수도, 빠르게, 느리게 설정할 수도 있다. 물리? 월드 공간에서 배치된 물체에 작용되는 물리적인 환경이다. 중력, 충돌 등과 같은 물리적 현상을 계산해서 ..