目錄表

國立屏東大學 即時與嵌入式系統實驗室

PThreads Programming Examples


基礎

pthread_create()建立執行緒

參考自HPC@LLNL

Header File

pthread.h

Prototype

       int pthread_create(pthread_t *restrict thread,
                          const pthread_attr_t *restrict attr,
                          void *(*start_routine)(void *),
                          void *restrict arg);

關於restrict

Parameters

使用範例

要使用pthread_create(),先考慮以下的c語言函式thrd_printHello():

void * thrd_printHello()
{
    printf("Hello\n");
    return NULL;
}

以下的pthread_create()呼叫,將會建立一個執行緒來執行thrd_printHello()函式:

pthread_t thrdID;
pthread_create( &thrdID, NULL, thrd_printHello, NULL);

我們可以將thrd_printHello()改為接收一個字串並將其輸出:

void * thrd_printString(char *str)
{
    printf("%s\n", str);
    return NULL;
}

以下的pthread_create()呼叫,則會將一個字串常值傳遞給新的thrd_printString函式:

pthread_t thrdID;
pthread_create( &thrdID, NULL, (void *)thrd_printString, "Hello");

要特別注意的是,上面的thrd_printString引數的原型為

(void *)(*thrd_printString)(char *)
void *(*start_routine)(void *)
並不相同,所以必須進行轉型。