critical-section

    0熱度

    1回答

    我有一個編譯問題,我無法在Visual Studio 2012的C++程序中解釋。該錯誤出現在程序中的幾個地方,這裏是一個示例: #ifndef __WINMUTEX_H__ # define __WINMUTEX_H__ # ifdef _WIN32 # include <windows.h> namespace Thread { class WinMutex { publ

    2熱度

    1回答

    我一直在試圖實現一直給我提出問題的Linux system_call,我懷疑這是因爲沒有使用我的代碼進行鎖定(或者可能搶佔) 。 我有一個非常頻繁調用的函數(每次調用system_call時會調用此自定義函數)中的關鍵部分,並且它也由system_calls啓動/停止。有什麼方法可以確保每次在Linux內核中進行系統調用時發生的這個關鍵段都是不可搶佔的,並且必須在其他任何事情發生之前完成執行?

    2熱度

    3回答

    以下循環在圖的所有邊上迭代,確定末端節點是否屬於同一組,然後將邊權重添加到該組的總邊權重中。 // TODO: parallel FORALL_EDGES_BEGIN((*G)) { node u = EDGE_SOURCE; node v = EDGE_DEST; cluster c = zeta[u]; cluster d = zeta[v];

    0熱度

    2回答

    我有以下場景: 我有多個工作線程運行,都經歷了一段代碼,並且他們被允許同時這樣做。由於這些線程不需要關鍵部分,所以現在沒有關鍵部分圍繞這段代碼。 我有一個主線程也是-occassionally-想要輸入該代碼段,但是當它的時候,其他工作線程都不應該使用該代碼段。 天真的解決方案:用關鍵部分圍繞代碼部分。但是,這會消除工作線程之間的很多並行性,這對我來說很重要。 有沒有更好的解決方案?

    6熱度

    1回答

    我正在研究Silberschatz,Galvin和Gagne的Operating System Concepts操作系統。 在229頁,書中指出這約Petersons Solution: 的由於現代計算機體系結構進行基本的機器 語言指令,如負載和存儲的方式,也不能保證 是彼得森的解決方案在這樣的體系結構上正確工作。 我看這件事上Wikipedia,發現這裏面似乎是最接近的解釋: 大多數現代的CPU

    1熱度

    1回答

    讓我們來考慮一個場景: - 內核線程獲取鎖和處於臨界區的中間出現中斷時。 中斷處理程序運行併到達同一關鍵部分,並嘗試獲取鎖定並進入睡眠狀態。 發生這種情況還是在臨界區禁用中斷? 採取了哪些步驟來避免它? // Some Code Acquire_lock() Critical section //Interrupt occurs and arrives to acquire the same

    2熱度

    4回答

    Windows關鍵部分中沒有隊列概念嗎? ,我有以下的專用線程渲染循環: while (!viewer->finish) { EnterCriticalSection(&viewer->lock); viewer->renderer->begin(); viewer->root->render(viewer->renderer); viewer->rend

    0熱度

    1回答

    我應該爲所有關鍵部分定義一個QMutex嗎?或者我應該爲每個關鍵部分定義一個QMutex? 在c Sharp中是否有任何相同的概念,例如c Sharp中的lock(object) {...}?

    2熱度

    1回答

    目前在我的代碼我有段像這樣 boost::mutex Mymutex void methodA() { boost::mutex::scoped_lock lock(Mymutex); ...... ...... ...... } ,我讀了關鍵的部分是不是互斥快?所以我正在做這樣的事情,我想知道這是否更快。 boost::recursive_mu

    1熱度

    3回答

    可能重複: ANSI C equivalent of try/catch? 有沒有辦法跳過關鍵代碼?或多或少像現代編程語言中的try-catch。剛纔我使用這種技術來發現錯誤: bindSignals(); { signal(SIGFPE, sigint_handler); // ... } int main(void) { bindsignals();