본문 바로가기
반응형

시그널3

[C언어] pthread 라이브러리를 이용해서 스레드에게 signal 보내기 Sending a Signal to Thread멀티 쓰레드 환경에서 시그널을 보내는 방법과 이를 다루는 코드 예제를 알아본다.기본 환경아래는 간단한 멀티 쓰레드 환경을 구현한 코드이다.세 개의 쓰레드가 각각 thread1, thread2, thread3 함수를 실행하며, 각 함수는 무한 루프 내에서 메시지를 출력한다. void* thread1(void *data){ while(1){ printf("thread 1\n"); sleep(2); }}void* thread2(void *data){ while(1){ printf("thread 2\n"); sleep(2); }}void* thread3(void *data){ while(1.. 2025. 1. 28.
[C언어] Signal 프로그래밍에서의 Race Condition과 해결법 시그널 프로그래밍에서의 Race Condition과 해결법시그널은 비동기적으로 동작하기 때문에, 잘못 설계된 시그널 핸들러는 Race Condition을 유발할 수 있다. Race Condition은 여러 흐름(프로세스나 스레드)이 공유 자원에 동시 접근하면서 예상치 못한 동작을 초래하는 문제를 말한다. 본 글에서는 시그널 핸들러로 인해 발생할 수 있는 Race Condition의 원리, 해결 방법, 그리고 관련 코드를 중심으로 자세히 설명한다.Race Condition의 발생 관련 개념Race Condition은 다수의 흐름(프로세스나 스레드)이 공유 자원에 동시에 접근하거나 수정하려고 할 때 발생할 수 있는 문제를 말한다. 이를 방지하려면 공유 자원에 대한 Critical Section(임계영역)을 .. 2024. 10. 17.
[C언어] Signal 프로그래밍 개념과 예제 시그널 프로그래밍의 이해시그널은 운영체제가 프로세스 간 통신을 위해 제공하는 비동기적 메시지 전달 메커니즘이다. 시그널은 프로세스에 특정 이벤트가 발생했음을 알리거나 작업을 중단하도록 요청하기 위해 사용된다. 이 글에서는 시그널의 동작 원리, System V와 POSIX 표준에 기반한 시그널 프로그래밍, 그리고 운영체제와 시그널의 관계를 자세히 설명한다.시그널의 기본 개념시그널의 정의시그널은 정수로 표현되는 작은 메시지로, 특정 이벤트를 알리기 위해 사용된다. 프로세스는 시그널을 받으면 이를 처리하거나 무시한다.시그널의 주요 상태Pending: 시그널이 도착했지만 아직 처리되지 않은 상태.Blocked: 프로세스가 시그널을 처리하지 않고 차단한 상태.Not Queued: 동일한 시그널이 여러 번 발생해도.. 2024. 10. 17.