Pthread

강병우·2023년 10월 23일
0

병렬프로그래밍

목록 보기
12/24

프로세스는 실행되는 프로그램의 인스턴스이다. 스레드는 "light weight" 프로세스이다(프로세스랑 유사함).
공유 메모리 프로그램에서의 싱글 프로세서는 다수의 제어 스레드들을 갖고 있을 것이다.

Posix Thread(Pthread)

Posix : A Standard for Unix-like operating Systems
C프로그램과 연동이 가능한 라이브러리이다. 멀티 스레드 프로그래밍을 위한 특정 API가 있다.
리눅스, 맥OS X, 솔라리스, HPUX에서 PThread core system이다.
비슷하게, 자바 스레드와 윈도우 스레드, 솔라리스 스레드가 있다.
Pthread가 포함된 소스코드를 Compile하려면 다음과 같은 명령어를 작성하면 된다.
gcc -g -Wal -o pth_hello pth_hello.c -lpthread
컴파일된 것들을 실행시키려면, 아래처럼 스레드의 개수와 함계 명령어를 작성한다.
./ pth_hello <number of threads>

  • Global Variales
    전역 변수를 사용할 때 조심해야 한다. 버그들을 생성할 가능성이 있다. 전역변수는 가급적, 동시에 사용되는 경우를 제한해야한다.
  • pthread_t objects
    불투명한 오브젝트이다. 이들이 저장하는 실제 데이터는 시스템별로 다르다. 유저코드에 직접적으로 접근할 수 없다.
    그러나, Pthread는 독자적으로 저장되는 특성을 갖고 ㅣㅇㅆ다.

  • pthread_create(
    pthread_t thread_p, // 호출 전 할당하기
    const pthread_attr_t
    attr_p, // 쓸 곳이 없으니 NULL로 패스
    void (start_routin)(void), // 스레드가 실행되기 위한 기능
    void
    arg_p // 함수로 전달되는 args
    )

pthread_join에 의해 각 스레드들이 모일 수 있다.

0개의 댓글