國立屏東大學 即時與嵌入式系統實驗室
pthread.h
int pthread_create(pthread_t *restrict thread, const pthread_attr_t *restrict attr, void *(*start_routine)(void *), void *restrict arg);
要使用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 *)並不相同,所以必須進行轉型。