在C語言中實現(xiàn)多線程并行計算可以使用pthread庫,以下是一個簡單的示例代碼:
#include <stdio.h>
#include <pthread.h>
// 定義線程函數(shù)
void *thread_function(void *arg) {
int *num = (int *)arg;
int result = 0;
// 計算累加和
for (int i = 1; i <= *num; i++) {
result += i;
}
// 返回計算結(jié)果
pthread_exit((void *)result);
}
int main() {
pthread_t threads[2];
int numbers[2] = {100, 200};
int results[2];
// 創(chuàng)建兩個線程
for (int i = 0; i < 2; i++) {
pthread_create(&threads[i], NULL, thread_function, &numbers[i]);
}
// 等待線程執(zhí)行完畢并獲取計算結(jié)果
for (int i = 0; i < 2; i++) {
pthread_join(threads[i], (void **)&results[i]);
}
// 輸出計算結(jié)果
for (int i = 0; i < 2; i++) {
printf("Thread %d result: %d\n", i, results[i]);
}
return 0;
}
這個示例代碼中,首先定義了一個線程函數(shù)thread_function
,該函數(shù)接收一個整數(shù)參數(shù),計算從1到該參數(shù)的累加和,并將結(jié)果作為線程的返回值。
在main
函數(shù)中,創(chuàng)建了兩個線程,并將不同的參數(shù)傳遞給每個線程。然后使用pthread_join
函數(shù)等待線程執(zhí)行完畢,并獲取計算結(jié)果。最后輸出計算結(jié)果。
需要注意的是,多線程并行計算可能存在線程間的競爭條件和同步問題,需要使用互斥量等機制來解決。上述示例代碼沒有考慮這些問題,僅用于演示多線程的基本用法。實際應用中,可能需要更加復雜的線程間通信和同步機制。