목록Language/C++ (37)
Coding Memo
C++에서 자신이 사용할 클래스를 템플릿화 시켜서 코드를 작성했다고 하자. 다음과 같은 코드가 있다. (별 의미가 없는 클래스이다) #pragma once template class MyData { public: int size() { return _data.size(); } void addData(T t) { _data.push_back(t); } vector data() { return _data; } private: vector _data; }; 이 클래스를 main함수가 포함되어 있는 파일에 추가하거나 다음과 같이 헤더파일을 include하여 main에서 사용하면 문제가 없다. 오류 없이 '10'이 제대로 출력되고 프로그램이 종료될 것이다. #include "MyData.h" int main() ..
Rockiss님의 게임 서버 강의에서 학습한 내용과 몇몇 인터넷 검색을 통해 정리하였다. Select WSAAsyncSelect WSAEventSelect Overlapped (event) Overlapped (callback) IOCP Async/Sync IO Sync IO Sync IO Sync IO Async IO Async IO Async IO Select Pros - 윈도우 뿐만 아니라 Linux 계열에서도 사용이 가능함 (이식성 우수) Cons - 호환성이 높은 만큼 성능이 다른 모델 보다 좋지 않음 (매번 fd_set 등록 필요) - 한번에 64개의 소켓까지 사용 가능 (FD_SETSIZE = 64) Methods 1. fd_set 초기화 (FD_ZERO) 2. socket 등록 (FD_SE..
이전 글: https://minttea25.tistory.com/68 volatile 변수 본 포스팅은 인프런에 등록되어 있는 Rockiss 님의 강의를 보고 간단하게 정리한 글입니다. 변수를 선언 할 때, 타입 앞에 volatile을 붙여서 선언할 수 있다. volatile 변수는 C/C++ 만 아니라 Java 등의 minttea25.tistory.com volatile 변수는 컴파일 시 최적화를 진행하지 않기 때문에 매번 값을 읽고 쓰기 위해 메모리에 접근하는 과정을 포함한다. 이전 글에서는 크게 문제가 될만한 사항이 없는 예제들에 대해서 작성하였지만 이번 글에서는 쓰레드에서 치명적인 문제가 발생할 수 있는 예시들에 작성하였다. 컴파일 최적화에서 어떤 변수에 대해 이 변수가 다른 쓰레드에서 사용을 하..
본 포스팅은 인프런에 등록되어 있는 Rockiss 님의 강의를 보고 간단하게 정리한 글입니다. 변수를 선언 할 때, 타입 앞에 volatile을 붙여서 선언할 수 있다. volatile 변수는 C/C++ 만 아니라 Java 등의 다른언어에도 있는 개념이다. volatile 키워드가 붙은 변수는 컴파일러가 코드를 최적화 하는 과정에서 해당 변수에 대한 최적화를 하지 않도록 한다. 즉, 컴파일 과정에서 최적화에서 제외되어 프로그램 실행 시에 매번 값을 확인하러 메모리에 접근하도록 한다. 아래 코드를 실행 시킨다고 하자. int main() { int a = 0; a = 1; a = 2; a = 3; cout

본 포스팅은 인프런에 등록되어 있는 Rockiss 님의 강의에서 언급된 내용과 제 생각을 함께 정리한 글입니다. 미리 컴파일 된 헤더 파일 사용 Pre-Complied Header: 포함된 헤더 파일을 미리 컴파일 하여 미리 파일로 저장시켜놓기 때문에, 매번 해당 헤더를 실행이나 빌드시 마다 매번 처음부터 컴파일을 하지 않아도 된다. 즉, 프로젝트가 커지면 커질수록 미리 컴파일 된 헤더 파일을 사용하면 디버그나 테스트를 좀 더 빨리 할 수 있다. 장점: 실행 시 마다 매번 헤더파일을 파싱하지 않아도 되기 때문에 컴파일 시간을 줄일 수 있다. 단점: 해당 헤더 파일의 내용을 바꾸면 변경 후 처음 컴파일 시간이 길어질 수 있다. (무거워 질 수 있다.) 사용 방법은 간단하다. 1. 프로젝트 우클릭 - 속성 ..