如果我下像lock_guard有一些代碼:std :: lock_guard可以被中斷嗎?
std::thread t([&]()
{
std::lock_guard<std::mutex> lock(m);
// some simple operations
});
我有一個保證,「一些行動」將永遠不會對t
線程運行這個核心CPU中斷? lock_guard之後是否可以切換上下文?
如果我下像lock_guard有一些代碼:std :: lock_guard可以被中斷嗎?
std::thread t([&]()
{
std::lock_guard<std::mutex> lock(m);
// some simple operations
});
我有一個保證,「一些行動」將永遠不會對t
線程運行這個核心CPU中斷? lock_guard之後是否可以切換上下文?
將會出現上下文切換,但可以保證所有其他線程都會被鎖住。
不,由互斥鎖保護的關鍵部分不會與實時優先級一起運行,除非您明確要求它這樣做,這不能使用標準C++庫來完成。內核仍然可以調度另一個線程(在相同的進程或其他進程中),它不等待互斥體。只有使用特定於操作系統的系統調用才能設置實時優先級。
你對thread和mutex有什麼想法? –
您的*程序*不會中斷操作。 –
@Biagio Festa。你問我?好的,我會回答......這種結構保證在「一些簡單的操作」過程中不會出現競態條件,但是我想知道線程是否被阻塞(我的意思是,在這個CPU核心上執行操作不會中斷 - 沒有上下文切換) – peter55555