C++17 - shared_mutex

출처 mutex로 보호 된 데이터를 다수의 스레드가 액세스 할 때 성능이 저하된다. 이 데이터 변경을 하지 않는 스레드가 다수인 경우 성능 저하를 줄일 수 있다. 데이터의 변경을 하지 않는 읽기(reader) 스레드와 데이터의 변경을 하는 쓰기(writer) 스레드가 각각 복수 동작하고 있다고...
더 읽기

mermaid.js와 PlantUML로 서버 개발 및 유지 보수에 필요한 문서 만들기

컴투스에서 매달 게임 서버 프로그래머 대상으로 세미나(회사에서는 월 세션 이라고 부릅니다)를 진행합니다. 주제는 게임 서버 개발과 관련된 것입니다. 이번 달에 발표한 문서를 공유합니다. 컴투스에서 모든 서버 프로그래머는 기본으로 JetBrains의 All Products Pack 라이센스가 있습니다. 그래서 JetBrains IDE 사용에 제약이 없어서...
더 읽기

C++17 - 복수의 using 선언 시 컴마 구분 사용

간결한 코딩을 위해 네임 스페이스를 생략하고 싶다면 using 선언을 사용한다 std::cout << "hello"; using std::cout; cout << "hello"; 그러나 아래와 같은 경우는 using std::cout; using std::endl; cout << "hello" << endl; 로 두 번이나 using 선언을 해야 한다. C++17에서는 위의...
더 읽기

C++17 - hardware_destructive_interference_size, hardware_constructive_interference_size

출처 C++ 17 표준 라이브러리 헤더에 추가 되었다 hardware_destructive_interference_size False-Sharing 발생을 방지하기 위해 필요한 최소 메모리 주소 거리. 2개의 변수를 서로 다른 캐시 라인에 싣기 위해 얼라이먼트 정보로 사용한다. hardware_constructive_interference_size 동일한 캐시 라인에 올리는(True-Sharing) 최대 개체 크기. 복수 변수 접근의...
더 읽기

C++17 - 람다식에서 *this의 복사 캡쳐

C++11에서 람다식의 캡쳐 리스트에 this를 지정하면 이 람다식이 속하는 클래스 오브젝트가 참조로 캡쳐된다. 비동기 처리나 병렬 처리에서 오브젝트 수명 관리를 간단하게 하기 위해 this를 참조가 아닌 복사로 캡쳐해야 하는 경우가 있다. 이 때 C++17에서 새로 생긴 *this 를 사용하여 클래스...
더 읽기