본문 바로가기
Embedded/Embedded Software

POSIX(Portable Operating System Interface for UNIX), pthread

by aloHyomora 2025. 10. 21.

1️⃣ POSIX란?

POSIX(Portable Operating System Interface for UNIX) → “유닉스 계열 운영체제 간 호환성을 위한 표준 인터페이스”

쉽게 말해 운영체제의 공통 언어로, 리눅스, 유닉스, macOS에서 똑같이 통하는 약속

 

2️⃣ POSIX와 스레드 (Pthreads)

POSIC는 여러 기능을 표준화했는데, 그중 멀티스레드 관련 표준이 Pthreads (POSIX Threads)입니다.

Pthreads = POSIX 표준 스레드 라이브러리

C 프로그램에서 스레드를 생성하고 제어할 때 pthread_로 시작하는 함수들을 사용합니다.
pthread_create(), pthread_join(), pthread_mutex_lock() 등

 

3️⃣ 스레드(Thread)란?

하나의 프로그램(프로세스) 안에서 동시에 여러 일을 수행하도록 하는 실행 단위.

각 스레드는 같은 메모리를 공유하지만, 실행 흐름은 따로 존재합니다.

┌──────────────────────────────────────────┐
│       프로그램(프로세스)                  │
│                                          │
│   ├── 메인 스레드(main)                   │
│   │                                      │
│   ├── pthread_create() 호출 → 새로운 스레드 생성
│   │                                      │
│   └── pthread_join() 호출 → 생성된 스레드 종료 대기
│                                          │
└──────────────────────────────────────────┘

 

 

4️⃣ 주요 Pthread 함수

함수 설명
pthread_create() 새 스레드 생성
pthread_join() 스레드 종료 대기
pthread_exit() 현재 스레드 종료
pthread_self() 현재 스레드 ID 반환
pthread_mutex_lock() / unlock() 임계영역 접근 제어 (상호배제)

5️⃣ 예시 코드

#include <stdio.h>
#include <pthread.h>

void* task(void* arg) {
    printf("스레드 실행 중! 인자값: %d\\n", *(int*)arg);
    return NULL;
}

int main() {
    pthread_t tid;
    int data = 10;

    pthread_create(&tid, NULL, task, &data); // 스레드 생성
    pthread_join(tid, NULL);                 // 스레드 종료 대기

    printf("메인 스레드 종료!\\n");
    return 0;
}