我有一个应用程序使用来自不同线程的集合,在这种情况下是队列。一个对象在一个线程中入队,而另一个在另一个线程中出队。
当重新定义集合计数器时,这些操作可能会同时发生,这将解决异常,例如参数超出范围异常。
我正在寻找一种“好看”以及正确的为什么要相互排除这些行为。
我所说的“好看”的意思是我不想创建我自己的从这个包含锁(对象)机制的集合
我不想使用我的头脑风暴的想法,这很“丑陋”
enqueueOk = false;
while (!enqueueOk)
{
try
{
Qsockets.Enqueue(currentSoc);
enqueueOk = true;
}
catch { }
}
我当然想使用锁或互斥锁,但只有当我将这些操作包装在一个将从每个线程调用的过程中,并决定入队或出队,这也将是长且“丑陋”
编辑:
因为似乎没有人在下面看到我的答案
我只是在集合本身上使用了锁定机制
lock(Qsockets)
{
Qsockets.Enqueue(currentSoc);
}