在C++中,等待指令(如std::this_thread::sleep_for
)和其他同步機制(如互斥鎖、條件變量等)都用于控制多個線程之間的執行順序和資源訪問。它們之間的主要區別在于使用場景、性能和實現方式。
等待指令(如std::this_thread::sleep_for
):
std::this_thread::sleep_for(std::chrono::seconds(1))
會讓當前線程暫停執行1秒鐘。互斥鎖(如std::mutex
):
std::mutex
和std::lock_guard
來保護共享資源:std::mutex mtx;
// ...
{
std::lock_guard<std::mutex> lock(mtx);
// 訪問共享資源
} // lock_guard在離開作用域時自動釋放鎖
條件變量(如std::condition_variable
):
std::condition_variable
和std::unique_lock
來實現線程間的同步:std::mutex mtx;
std::condition_variable cv;
bool ready = false;
// ...
{
std::unique_lock<std::mutex> lock(mtx);
cv.wait(lock, []{ return ready; }); // 等待條件成立
// 處理條件成立后的操作
} // unique_lock在離開作用域時自動釋放鎖
總之,等待指令和其他同步機制在不同的場景下有不同的適用性。在選擇同步機制時,需要根據具體需求權衡各種因素,如性能、易用性和可擴展性等。