C 語(yǔ)言標(biāo)準(zhǔn)庫(kù)提供了創(chuàng)建線程的函數(shù) pthread_create,該函數(shù)原型如下:
#include <pthread.h>
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
其中:
thread:用于存儲(chǔ)新線程的唯一標(biāo)識(shí)符。
attr:線程的屬性值,如果為 NULL,表示使用默認(rèn)屬性。
start_routine:新線程要執(zhí)行的函數(shù)指針,函數(shù)返回類型為 void*,參數(shù)為 void*。
arg:傳遞給新線程的參數(shù),類型為 void*。
pthread_create函數(shù)返回值為 0 表示成功,否則表示出錯(cuò)。
下面是一個(gè)示例程序,演示如何使用 pthread_create 函數(shù)創(chuàng)建一個(gè)新線程,并執(zhí)行一個(gè)簡(jiǎn)單函數(shù):
#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;
}
在這個(gè)示例程序中:
print_message 函數(shù)將傳遞給它的字符串打印到標(biāo)準(zhǔn)輸出,并調(diào)用 pthread_exit 函數(shù)退出線程。
在 main 函數(shù)中,創(chuàng)建一個(gè) pthread_t 類型的變量 thread,用于存儲(chǔ)新線程的唯一標(biāo)識(shí)符。
定義一個(gè) char 指針變量 message,并將其指向字符串常量 "Hello, world!"。
調(diào)用 pthread_create 函數(shù)創(chuàng)建一個(gè)新線程,并傳遞 print_message 函數(shù)指針和 message 指針作為參數(shù)。
如果 pthread_create 函數(shù)返回值不為 0,說(shuō)明創(chuàng)建線程失敗,程序?qū)⑤敵鲥e(cuò)誤消息并退出。
調(diào)用 pthread_join 函數(shù)等待新線程退出。
需要注意的是,創(chuàng)建的新線程會(huì)獨(dú)立運(yùn)行,且與主線程并行執(zhí)行。在多線程程序中,需要考慮線程間的同步和互斥問(wèn)題。