[C++] 同步原語 (Synchronize Primitive)
本文會講解 C++ 中同步原語 (synchronize primitive) 的基本概念。
Thread
為了提高程式的效能,許多程式語言都支持多執行緒 (multi-thread),而 C++ 也提供了 std::thread
來支援多執行緒。
#include <iostream>
#include <thread>
int count = 0;
void add_count() { count += 1; }
int main() {
std::thread t1(add_count);
std::thread t2(add_count);
t1.join();
t2.join();
std::cout << "Printing count: " << count << std::endl;
return 0;
}
Mutex
在多執行緒的環境下,為了避免多個執行緒同時修改共享資源 (shared resource),我們可以使用 std::mutex
來保護共享資源。
#include <iostream>
#include <mutex>
#include <thread>
int count = 0;
std::mutex mtx;
void add_count() {
mtx.lock();
count += 1;
mtx.unlock();
}
int main() {
std::thread t1(add_count);
std::thread t2(add_count);
t1.join();
t2.join();
std::cout << "Printing count: " << count << std::endl;
return 0;
}