리눅스 C++ Signal 핸들러 클래스 (멀티스레드 기반) 1. 개요 이 문서는 리눅스 환경에서 시그널 처리 전용 클래스를 만들고, 별도의 스레드에서 안전하게 시그널을 처리하는 구조를 설명합니다. 2. 핵심 설계 시그널과 콜백을 등록하는 유연한 클래스 구조 핸들링은 별도 스레드에서 sigwaitinfo()로 처리 메인 스레드는 자유롭게 동작 가능 3. 클래스 헤더: SignalHandler.hpp #pragma once#include #include #include #include #include #include class SignalHandler {public: using Callba..
C++ 크로스 플랫폼 에러 처리 시스템 설계 ✅ 개요 Windows의 GetLastError()와 같은 방식의 에러 핸들링 시스템을 C++로 구현합니다. 이 시스템은 다음을 포함합니다: Thread Local Storage 기반 에러 저장 프로젝트 공통 에러 코드 정의 에러 메시지 출력 (다국어 지원 가능) 에러 로그 기록 운영체제의 시스템 에러 코드 매핑 1. ❌ 에러 코드 정의 - ErrorCode.hppenum class ErrorCode { OK = 0, UNKNOWN, INVALID_PARAM, ..
리눅스 타이머 방식 정리 및 비교표1. 리눅스에서 사용 가능한 타이머 방식리눅스에서는 다양한 방식으로 주기적인 작업을 수행할 수 있습니다. POSIX 타이머, sleep, pthread, alarm 등 여러 방식이 존재하며, 각각의 방식은 성능과 사용 용도에 따라 적합성이 다릅니다.2. 리눅스 타이머 방식 및 예제 코드1. POSIX 타이머 (timer_create)설명: 고정밀 타이머로, SIGEV_THREAD 옵션을 사용해 타이머 만료 시 별도의 스레드에서 콜백이 실행됩니다.#include #include #include void timer_handler(union sigval sv) { printf("Timer expired! Data sent.\n");}void create_timer() {..
SetTimer vs Thread Sleep vs CreateTimerQueueTimer 비교 윈도우 애플리케이션에서 일정 시간 간격으로 작업을 수행하는 방법으로 SetTimer, Thread + Sleep, CreateTimerQueueTimer가 자주 사용됩니다. 각각의 방식은 동작 방식과 장단점이 다르며, 상황에 따라 적합한 방식이 달라집니다. 1. SetTimer 동작 방식: 일정 시간 간격으로 WM_TIMER 메시지를 메시지 큐에 추가하여 타이머 이벤트를 발생시킵니다. 메인 스레드에서 타이머 콜백이 처리됩니다. SetTimer(hWnd, 1, 1000, NULL); // 1초마다 WM_TIMER 발생switch (message) { case WM_TIM..
CFileMon 클래스 설계 및 구현 개요 CFileMon 클래스는 특정 파일의 변경 사항을 감지하며, Windows와 POSIX 환경 모두에서 작동하도록 설계되었습니다. Named Mutex를 활용하여 다중 프로세스 동기화를 보장하며, 파일이 삭제되거나 수정되는 상황에 안정적으로 대응합니다. 주요 기능 Windows 및 POSIX 환경 지원 Named Mutex를 활용하여 다중 프로세스 동기화 파일 변경 시 해시를 비교하여 변경 여부 감지 파일이 삭제되거나 접근 불가한 경우 예외 처리 주기적인 파일 상태 확인 (스레드 기반 구현) 플랫폼별 구현 ..
C++ Thread Local Storage (TLS) and GetLastError 1. TLS 설명 C++에서 TLS (Thread Local Storage)는 각 스레드가 고유한 변수를 저장하고 접근할 수 있게 해주는 메커니즘입니다. TLS는 다중 스레드 환경에서 각 스레드가 서로 독립적으로 데이터를 저장할 수 있도록 도와줍니다. thread_local 키워드를 사용하여 각 스레드마다 별도의 변수를 선언할 수 있습니다. 스레드 간 경합을 피할 수 있으므로 동기화 없이 안전한 데이터 처리가 가능합니다. 2. TLS 예제 코드 #include #include thread_local int counter = 0;void..
- Total
- Today
- Yesterday
- 패턴
- Thread
- 블루버블다이브팀
- 현포다이브
- OpenSource
- 암호화
- Windows
- Linux
- 서귀포
- 리눅스
- C# 고급 기술
- C#.NET
- 울릉도
- 블루버블다이빙팀
- 스쿠버 다이빙
- CMake
- 외돌개
- 서귀포블루버블
- ip
- Build
- C#
- 스쿠버다이빙
- 윈도우
- C
- PowerShell
- C++
- 블루버블
- DLL
- 제주도
- 성산블루버블
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |