C++ - TimingWheel 알고리즘을 사용한 타이머

자세한 설명은 http://d2.naver.com/helloworld/267396. 타임아웃 작업의 만료 여부에 대한 검사가 필요 없는 등록과 실행 두 작업만을 모두 O(1)의 시간 복잡도로 처리할 수 있는 타이머를 구현할 수 있다. 출처: https://github.com/billlin0904/librapid uint64_t TimingWheel::add(uint32_t timeout, bool onece, TimeoutCallback callback) { //std::lock_guard<platform::Spinlock> guard{ lock_ };...
더 읽기

C++ - Win32API 스레드 풀을 사용하는 타이머

Windows Vista부터 사용 가능. CreateThreadpoolTimer, SetThreadpoolTimer API 사용. ‘윈도우 시스템 프로그램을 구현하는 기술(한빛미디어)’에 설명이 잘 나와 있음 예제 코드 출처: https://github.com/billlin0904/librapid using TimerPtr = std::shared_ptr<Timer>; class Timer { public: using TimeoutCallback = std::function<void(void)>; static TimerPtr createTimer(); void start(TimeoutCallback callback, uint32_t...
더 읽기

C++ - Core Guidelines Checker와 GSL 도입

출처 시작하기 C++ Core Guidelines Checker는? 주로 Bjarne Stroustrup과 Herb Sutter에 의한 C++ Core Guidelines는 더 나은 C++ 코드를 작성하는데 필요한 지침이 정비 되어 있다. 이 지침의 많은 항목은 분석 도구를 통해 확인 가능하도록 쓰여져 있다. C++ Core Guidelines Checker는...
더 읽기

C# - BenchmarkDotNet 글 링크

BenchmarkDotNet 라이브러리 소개 .NET Core + BenchmarkDotNet 실행 시 프레임워크를 찾지 못하는 문제 BenchmarkDotNet 사용 시 주의 사항 BenchmarkDotNet에서 생성한 BuildPlots.R 파일을 실행하는 방법 BenchmarkDotNet으로 Span 성능 측정 (일어)BenchmarkDotNet을 사용해 보자 (일어)BenchmarkDotNet 개요 (일어).NET Core에서 BenchmarkDotNet을 이용하기 (일어)BenchmarkDotNet을 .NET Framework와...
더 읽기

Rust - VS Code의 Remote Container로 Rust를 시작하기

출처 VS Code의 Remote Container 기능을 사용하여 최대한 빨리 Rust을 시작하려는 사람들에게 아래의 docker-compose.yaml 를 준비했다! docker-compose.yaml version: '3' services: rust: image: rust:1.38 volumes: - .:/opt/rustapp environment: - USER=`${USER}` working_dir: /opt/rustapp stdin_open: true rust:1.38는 현재 최신 버전이다. Docker Hub의 Rust...
더 읽기