POSIXスレッド (pthread) は、POSIX (Portable Operating System Interface) によって定められたスレッド・インタフェースです。Unixにおいてマルチスレッドを扱う場合、各Unix固有の方法より、POSIXスレッドの方が移植性が高くなります。
POSIXスレッドを終了させるには、以下の3種類の方法がある。
ライブラリ関数 | 説明 |
---|---|
pthread_create | 新しいスレッドを作成する。 |
pthread_join | スレッドの終了を待つ。 |
pthread_detach | スレッドを切り離す。 |
pthread_exit | 呼び出しスレッドを終了させる。 |
pthread_cancel | スレッドに取り消し要求を送信する。 |
新しいスレッドを作成する。
正常に終了すると、戻り値として0を返す。それ以外の戻り値は、エラーが発生したことを示す。
#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *), void *arg);
#include <pthread.h>
#include <stdio.h>
#include <unistd.h>
void func(void *arg) {
printf("thread %s\n", (char *)arg);
sleep(3);
}
int main(int argc, char *argv[]) {
pthread_t pthread;
char arg[] = "1";
printf("create thread\n");
if (pthread_create(&pthread, NULL, (void *)func, arg) == 0) {
pthread_join(pthread, NULL);
printf("thread terminates\n");
}
}
スレッドの終了を待つ。切り離していないスレッドのみ有効である。
正常に終了すると、戻り値として0を返す。それ以外の戻り値は、エラーが発生したことを示す。
#include <pthread.h>
int pthread_join(pthread_t thread, void **retval);
スレッドを切り離す。
正常に終了すると、戻り値として0を返す。それ以外の戻り値は、エラーが発生したことを示す。
#include <pthread.h>
int pthread_detach(pthread_t thread);
呼び出しスレッドを終了させる。
#include <pthread.h>
void pthread_exit(void *retvel);
スレッドに取り消し要求を送信する。
正常終了時は戻り値として0を返す。それ以外の戻り値は、エラーが発生したことを示す。
#include <pthread.h>
int pthread_cancel(pthread_t thread);