C#에서 volatile 키워드의 역할과 활용

C#의 volatile 키워드는 특정 필드가 여러 스레드에 의해 동시에 접근될 수 있음을 컴파일러와 런타임에 알리며, 해당 필드에 대한 읽기 및 쓰기 작업이 최적화되지 않도록 방지합니다. 이를 통해 모든 스레드가 항상 최신 값을 볼 수 있도록 보장하며, 간단한 동기화 요구 사항을 해결하는 데 유용합니다. volatile의 주요 기능 메모리 가시성 보장 다중 스레드 환경 ...

8월 17일 18:25에 게시됨

C# 다중 스레딩: 스레드 제어, 상태, 우선순위 및 유형 이해

스레드 중단 (Abort) 스레드 중단은 스레드의 실행을 강제로 멈추는 기능입니다. C#에서는 Thread.Abort() 메서드를 제공했으나, 이 메서드는 예측 불가능한 동작을 유발하고 리소스 누수를 일으킬 수 있어 .NET 5.0부터는 더 이상 지원되지 않으며 사용을 권장하지 않습니다. 대신 협력적 취소(Cooperative Cancellation) 패턴을 사용하는 것이 좋습니다. 여기서는 레거시 ...

7월 20일 20:00에 게시됨

파이썬에서의 다중 스레딩 기초 및 실용적 활용

스레드의 개념과 역할 프로세스는 운영체제에서 실행되는 프로그램의 인스턴스로, 자체적인 메모리 공간을 갖습니다. 각 프로세스는 최소 하나의 스레드(주 스레드)를 포함하며, 이 스레드가 실제로 코드를 실행합니다. 이를 비유하면, 프로세스는 자재를 모아서 제품을 생산하는 공장이며, 스레드는 그 안의 생산 라인입니다. 여러 스레드는 동일한 프로세스 내에서 공유 ...

7월 8일 22:24에 게시됨

kbmMW 스케줄러 WaitRun 메서드의 데드락 문제

kbmMW 스케줄러의 WaitRun 메서드에서 발생하는 데드락 문제를 재현하기 위해 테스트 코드를 작성했다. 이 문제는 두 가지 상황에서 발생할 수 있다.첫 번째 상황은 Run 메서드 내부에서 예외가 발생하는 경우다. 이때 메인 스레드에서 실행 중인 ev.WaitRun이 무한 루프에 빠진다. 두 번째 상황은 AfterRun 콜백을 사용하는 경우다. 이 또한 동일한 문제를 야기한다. 해당 ...

7월 8일 20:36에 게시됨

Python 동시성 프로그래밍: GIL 메커니즘부터 성능 최적화까지

동시성 이해하기: 공장 모델과 GIL 공장 생산 라인을 생각해보자. 단일 스레드는 한 명의 작업자가 순차적으로 모든 공정을 처리하는 것과 같다. 다중 스레드는 여러 작업자가 각자의 작업을 동시에 수행하는 것이다. 그러나 Python에는 전역 인터프리터 잠금(GIL)이라는 특수한 규칙이 있어서, 특정 시점에 오직 하나의 작업자만 핵심 공정(CPU)을 사용할 수 있다. import ...

7월 7일 05:20에 게시됨

파이썬 멀티스레딩 기초 및 실습 가이드

threading 모듈의 핵심 개념 파이썬의 threading 모듈은 동시성 처리를 위한 기본 도구로, 프로세스와 유사한 인터페이스를 제공합니다. 주로 단일 프로세스 내에서 여러 스레드를 생성하여 작업을 병렬로 수행할 수 있도록 합니다. 스레드 생성 방법 두 가지 스레드는 함수 기반과 클래스 기반으로 생성할 수 있습니다. 함수 기반: Thread(target=function, args=()) 형 ...

7월 5일 23:23에 게시됨

크롤링 관련 실용적인 팁 및 기술

크롤링 관련 실용적인 팁 및 기술 목차- 크롤링 관련 실용적인 팁 PyCharm을 활용한 문자열 처리 (예: 요청 헤더에 따옴표 추가) Chrome F12 디버거에서 "Debugger Paused" 해결 방법 수동으로 프록시 설정 변경하기 User-Agent 풀 구성 및 활용 프로그램 실행 시간 표시 중요한 크롤링 요청 파라미터 구성 문자열 날짜에 하루 더하기 스레드 풀과 고정 간격의 ...

7월 4일 21:01에 게시됨

파이썬 멀티스레딩과 threading 모듈 활용

스레드 기본 개념 스레드와 프로세스는 사용 방식과 스케줄링 전략이 유사하지만 본질적인 차이점은 다음과 같습니다: 프로세스: 자원 할당 단위로, 독립된 메모리 공간을 나타냅니다 스레드: 실행 단위로, 실제 코드 명령어를 실행합니다 하나의 프로세스 내에는 여러 개의 스레드가 존재할 수 있으며, 마치 하나의 공장에 여러 개의 생산 라인이 있는 것과 같습니다. ...

6월 10일 21:15에 게시됨

파이썬의 재귀 락, 세마포어, 이벤트, 스레드 큐, 프로세스 및 스레드 풀, 콜백 함수, 타이머

1. 스레드의 데드락과 재귀 락 (RLock) 데드락은 두 개 이상의 스레드가 서로 자원을 기다리며 진행이 멈추는 현상이다. 예를 들어, 스레드 A가 자원 1을 점유하고 자원 2를 요청하고, 동시에 스레드 B가 자원 2를 점유하고 자원 1을 요청하면, 둘 다 대기 상태에 빠져 프로그램이 정지된다. 이 문제를 해결하기 위해 파이썬에서는 RLock(Reentrant Lock)을 제공한다. 이 ...

6월 1일 23:56에 게시됨

C#에서의 위임, 이벤트, 동기 및 비동기 처리 개념 정리

위임(Delegate)의 기본 구조 위임은 특정 반환 타입과 매개변수 시그니처를 가진 메서드를 참조할 수 있는 형식이다. 이는 함수 포인터와 유사하지만, 타입 안전성을 갖춘 객체 기반의 구현이다. public delegate void MessageHandler(string message); 이 위임을 사용해 인스턴스를 생성하고, 적절한 메서드를 연결할 수 있다. MessageHandler handler = new MessageH ...

5월 30일 16:04에 게시됨