以下是一個使用C++多線程修改全局變量的代碼示例:
#include <iostream>
#include <thread>
#include <mutex>
std::mutex mtx; // 互斥鎖
int globalVariable = 0;
void threadFunction(int threadId) {
std::lock_guard<std::mutex> lock(mtx); // 加鎖,保證互斥訪問
// 修改全局變量
globalVariable += threadId;
// 打印修改后的全局變量值
std::cout << "Thread " << threadId << ": Global Variable = " << globalVariable << std::endl;
}
int main() {
std::thread t1(threadFunction, 1);
std::thread t2(threadFunction, 2);
std::thread t3(threadFunction, 3);
t1.join();
t2.join();
t3.join();
// 打印最終全局變量值
std::cout << "Final Global Variable = " << globalVariable << std::endl;
return 0;
}
上述代碼中,定義了一個全局變量globalVariable
,并使用std::mutex
定義了一個互斥鎖mtx
。在線程函數threadFunction
中,需要對globalVariable
進行修改時,先使用std::lock_guard
加鎖,以保證同一時間只有一個線程可以修改全局變量。修改后,打印出修改后的值。
在main
函數中,創建了三個線程,并使用std::thread
類分別啟動這三個線程,線程函數為threadFunction
。最后,通過調用join
函數等待線程執行完畢,并打印最終的全局變量值。