C 語言標準庫提供了創建線程的函數 pthread_create,該函數原型如下:
#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
其中:
thread:用于存儲新線程的唯一標識符。
attr:線程的屬性值,如果為 NULL,表示使用默認屬性。
start_routine:新線程要執行的函數指針,函數返回類型為 void*,參數為 void*。
arg:傳遞給新線程的參數,類型為 void*。
pthread_create函數返回值為 0 表示成功,否則表示出錯。
下面是一個示例程序,演示如何使用 pthread_create 函數創建一個新線程,并執行一個簡單函數:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *print_message(void *ptr) {
char *message = (char*) ptr;
printf("%s\n", message);
pthread_exit(NULL);
}
int main() {
pthread_t thread;
char *message = "Hello, world!";
if(pthread_create(&thread, NULL, print_message, (void*) message)) {
fprintf(stderr, "Error creating thread\n");
return 1;
}
pthread_join(thread, NULL);
return 0;
}
在這個示例程序中:
print_message 函數將傳遞給它的字符串打印到標準輸出,并調用 pthread_exit 函數退出線程。
在 main 函數中,創建一個 pthread_t 類型的變量 thread,用于存儲新線程的唯一標識符。
定義一個 char 指針變量 message,并將其指向字符串常量 "Hello, world!"。
調用 pthread_create 函數創建一個新線程,并傳遞 print_message 函數指針和 message 指針作為參數。
如果 pthread_create 函數返回值不為 0,說明創建線程失敗,程序將輸出錯誤消息并退出。
調用 pthread_join 函數等待新線程退出。
需要注意的是,創建的新線程會獨立運行,且與主線程并行執行。在多線程程序中,需要考慮線程間的同步和互斥問題。