1
是否有有關調用unmanaged
代碼時使用多線程的一些普遍性的建議?C#線程問題
我隨機收到訪問衝突錯誤,顯然挖入unmanaged
代碼沒有多大意義。
是否有一些方法我可以嘗試的,而不是把這些調用到某種一個critical section
,以消除衝突錯誤?
是否有有關調用unmanaged
代碼時使用多線程的一些普遍性的建議?C#線程問題
我隨機收到訪問衝突錯誤,顯然挖入unmanaged
代碼沒有多大意義。
是否有一些方法我可以嘗試的,而不是把這些調用到某種一個critical section
,以消除衝突錯誤?
這取決於您所調用的非託管組件是否已編程爲線程安全。
如果並行調用這個代碼,只有當獲得訪問衝突,它看起來像你正在使用的不是線程安全的組件。
使用C#lock()
聲明,以確保安全:
private static readonly myLockObject = new object();
...
lock (myLockObject)
{
CallMyUnsafeCode();
}
那麼,我最終意味着什麼時候談論「關鍵部分」。不管怎麼說,還是要謝謝你 – 2011-05-10 13:53:09
訪問衝突錯誤並不一定是* *的多線程問題,至少不是當你寫不安全代碼的結果。你是否明確地創建了多個線程,還是隻是假設它一定是問題?調試器告訴你什麼? – 2011-05-10 13:49:31