0
我的第一個想法是關於SpinLock
或Concurrent Collections
鎖將在我測試,但它更昂貴的工作在這裏!鎖添加到集合
這裏的過程基於並行編程。並行任務多於一個。
在SpinLock版本中,我偶爾會遇到一個類似於"Index out of range"
的隨機錯誤。
我寫的SpinLock版本無法完成我想要的工作,可以對其進行任何更改以使其工作?或者它是否與這種情況完全相關?
任何信息?
它有更好的選擇嗎?
這是我做過什麼:
lock (lckRelatz)
{
relatz.Add(st);
}
這裏是自旋鎖版本 - 這是並行運行的方法中:
SpinLock spinLk = new SpinLock();
bool gotLock = false;
try
{
spinLk.Enter(ref gotLock);
relatz.Add(st);
}
finally
{
if (gotLock)
spinLk.Exit();
}
很好的答案,似乎你得到了關鍵,哪個集合將在這裏工作? BlockingCollection?關於鎖的創建我認爲,在我的代碼編輯中,它以幾種不同的方式做了它,我認爲增加了像你之前所說的但隨時間而改變並且不知道確切問題。 – Sypress 2012-07-11 08:07:18
這取決於你想要什麼,但'BlockingCollection'或'ConcurrentQueue'是最有用的。如果你不需要阻塞,'ConcurrentQueue'應該足夠了。 – svick 2012-07-11 09:13:49