critical-section

    0熱度

    3回答

    我正在使用C++。 在.h: static CRITICAL_SECTION g_CS; 在.cpp: CRITICAL_SECTION CQCommon::g_CS; ,但我想在一個靜態函數使用 QGUID temp; EnterCriticalSection(&g_CS); temp = g_GUID++; LeaveCriticalSection(&g_CS); return

    5熱度

    6回答

    我需要使用來自多個線程的數組,因此我使用CRITICAL SECTION賦予它對數據的獨佔訪問權限。 這裏是我的模板: #include "stdafx.h" #ifndef SHAREDVECTOR_H #define SHAREDVECTOR_H #include <vector> #include <windows.h> template<class T> class Sha

    1熱度

    3回答

    是否有2個或更多的線程在同一個事件處理程序中調用Win32 API的SetEvent時不安全?

    2熱度

    5回答

    我正在用WinSock2和WinAPI函數寫一個聊天。我有一點麻煩。 我將客戶端連接的std :: vector存儲在服務器上。當新客戶端連接時,新線程啓動,並且所有與客戶端一起工作都在這個新線程中完成。我不使用類(我知道它不是很好),所以這個連接列表被定義爲全局變量。 在我看來,它可能是多個線程同時嘗試訪問此列表的情況。雖然我還沒有注意到,有與任何問題,我需要做這樣的事情: template

    14熱度

    8回答

    這些實際上是三個不同的概念還是我混亂? (我一直在閱讀有關線程和垃圾收集物品一起,混淆了自己。) 「臨界區」 - 我想這可能只是對於你不想多線程的代碼段術語同時訪問,即內部鎖和Monitor.Enter/Exit語句? 「關鍵區域」 - 這裏沒有真正的線索 - MSDN說的是「這告訴主機,該部分中引發的異常可能會產生更廣泛的影響」。而且「CLR的主機,例如Sql Server」可以選擇「以不同方式

    0熱度

    2回答

    我有一個dll創建一個全局臨界區,初始化並使用它。 現在,第三方應用程序正在多次使用/加載dll,這會導致堆損壞。 的appverifier警告我有 - > VERIFIER STOP 00000211:PID 0x1470:關鍵部分已經被初始化。 < - 使用全局標誌來檢查臨界區對象是否已經初始化沒有幫助,關於完成相同的任何想法? 感謝

    6熱度

    3回答

    我有一個列表的包裝,維護兩個Tstringlists和TClassList 我需要這是線程安全的,這樣的: 併發寫入不允許(等待應該是進入某種狀態) 讀而寫(反之亦然)是不允許的(等待某種狀態應該是進入) 併發讀取是允許 關於如何做到這一點的任何想法?我的直覺告訴我,它不僅需要一個關鍵部分,可能是一個信號量或「使用計數器」,可能是其中一個帶有CS的聯合。 我只是不太確定從哪裏開始 - 從英語到僞代

    3熱度

    8回答

    我們有一個D2007應用程序,它在Windows Server 2008(x64,sp1)上運行時內存佔用率穩步增長。 它在Windows Server 2003(x32或x64),XP等上正常運行......按預期上下運行。 我們嘗試過使用包含的內存管理器或最新的FastMM4 4.92,結果相同。 有沒有人試圖監視Win2008上的任何Delphi應用程序的內存使用情況,並確認? 或者會有任何

    8熱度

    10回答

    我要實現在C++中使用Win32 API作爲工作項目的一部分讀/寫鎖。所有現有的解決方案都使用內核對象(信號量和互斥量),這些對象在執行過程中需要上下文切換。這對我的應用來說太慢了。 我想實現一個只使用關鍵部分,如果可能的話。鎖不必是安全的,只有線程安全。有關如何去做這件事的任何想法?

    5熱度

    3回答

    看來,在Vista/Windows Server 2008中使用臨界區會導致操作系統無法完全恢復內存。 我們在Delphi應用程序中發現了這個問題,顯然是因爲使用了CS API。 (看到這個SO question) 有沒有其他人看到它用其他語言(C++,...)開發的應用程序? 示例代碼只是初始化10000000 CS,然後刪除它們。這在XP/Win2003中運行正常,但在應用程序結束之前不會釋放