在C語言中,不同線程可以通過共享的全局變量來訪問同一變量。具體步驟如下:
定義一個全局變量,可以在不同線程之間共享。例如,定義一個int類型的全局變量shared_var
。
在定義線程函數時,將需要訪問的變量作為參數傳入線程函數中。例如,假設有兩個線程函數thread_func1
和thread_func2
,它們都需要訪問shared_var
。
void *thread_func1(void *arg) {
int *shared_var_ptr = (int *)arg;
// 使用shared_var_ptr訪問共享變量shared_var
// ...
}
void *thread_func2(void *arg) {
int *shared_var_ptr = (int *)arg;
// 使用shared_var_ptr訪問共享變量shared_var
// ...
}
int main() {
pthread_t thread1, thread2;
int shared_var = 0;
// 創建線程并傳遞共享變量的地址
pthread_create(&thread1, NULL, thread_func1, (void *)&shared_var);
pthread_create(&thread2, NULL, thread_func2, (void *)&shared_var);
// 等待線程結束
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
return 0;
}
在上述代碼中,通過使用pthread_create
函數創建線程并傳遞了&shared_var
作為參數,實現了兩個線程共享同一變量shared_var
。在線程函數中,通過將參數強制轉換為int *
類型,可以使用指針來訪問共享變量shared_var
的值。
需要注意的是,對于共享變量的訪問可能存在競態條件(Race Condition),需要使用同步機制(如互斥鎖、信號量等)來保護共享變量的訪問,以避免數據的不一致性和沖突。