2016-10-10 84 views
1

如果我下像lock_guard有一些代碼:std :: lock_guard可以被中斷嗎?

std::thread t([&]() 
{ 
    std::lock_guard<std::mutex> lock(m); 
    // some simple operations 
}); 

我有一個保證,「一些行動」將永遠不會對t線程運行這個核心CPU中斷? lock_guard之後是否可以切換上下文?

+0

你對thread和mutex有什麼想法? –

+0

您的*程序*不會中斷操作。 –

+0

@Biagio Festa。你問我?好的,我會回答......這種結構保證在「一些簡單的操作」過程中不會出現競態條件,但是我想知道線程是否被阻塞(我的意思是,在這個CPU核心上執行操作不會中斷 - 沒有上下文切換) – peter55555

回答

1

將會出現上下文切換,但可以保證所有其他線程都會被鎖住。

0

不,由互斥鎖保護的關鍵部分不會與實時優先級一起運行,除非您明確要求它這樣做,這不能使用標準C++庫來完成。內核仍然可以調度另一個線程(在相同的進程或其他進程中),它不等待互斥體。只有使用特定於操作系統的系統調用才能設置實時優先級。

相關問題