在C語(yǔ)言中實(shí)現(xiàn)多線程可以使用POSIX線程庫(kù)(pthread)或Windows線程庫(kù)等。下面是一個(gè)使用POSIX線程庫(kù)實(shí)現(xiàn)多線程的示例:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
// 線程函數(shù),傳入一個(gè)整數(shù)參數(shù)
void* thread_func(void* arg) {
int n = *(int*)arg;
printf("Hello from thread %d\n", n);
pthread_exit(NULL);
}
int main() {
int num_threads = 5;
pthread_t threads[num_threads];
int thread_args[num_threads];
// 創(chuàng)建多個(gè)線程
for (int i = 0; i < num_threads; i++) {
thread_args[i] = i;
pthread_create(&threads[i], NULL, thread_func, &thread_args[i]);
}
// 等待每個(gè)線程結(jié)束
for (int i = 0; i < num_threads; i++) {
pthread_join(threads[i], NULL);
}
printf("All threads are done.\n");
return 0;
}
在這個(gè)示例中,thread_func
是一個(gè)線程函數(shù),用來(lái)打印線程的標(biāo)識(shí)號(hào)。main
函數(shù)中首先創(chuàng)建了多個(gè)線程,每個(gè)線程都傳入一個(gè)整數(shù)參數(shù),然后等待每個(gè)線程執(zhí)行完畢。最后輸出所有線程結(jié)束的提示信息。
要編譯上述代碼,可以使用以下命令:
gcc -o multithreading multithreading.c -lpthread
這將生成一個(gè)可執(zhí)行文件multithreading
,運(yùn)行它將會(huì)看到多個(gè)線程按順序打印出它們的標(biāo)識(shí)號(hào),最后輸出所有線程結(jié)束的提示信息。
請(qǐng)注意,在使用多線程時(shí)要注意線程間的同步和互斥問(wèn)題,以避免競(jìng)爭(zhēng)條件和數(shù)據(jù)訪問(wèn)沖突等問(wèn)題。