我有 2 个线程,一个添加到 Enqueue,一个执行 Dequeue 并进行一些处理,
现在有时队列会变空,可能需要几分钟才能用一个元素填充它,另一方面,如果数据是本地的,它可能有几百个元素,所以它混合了快速添加的本地数据和数据必须先下载。
现在如果我做类似的事情
While(queue.count > 0)
{
//lock denque and process
}
另一方面,如果我执行类似的操作,它将退出循环并且线程将结束
While(queue.count > 0 && DownloaderThreadisRunning)
{
//lock denque and process
}
我还有另一个问题,因为某些对象可能需要处理时间到 Enqueue 线程已经结束其工作的地步,所以它不会进入循环。
我想到了类似的东西
While(queue.count > 0)
{
//lock denque and process
if(!DownloaderThreadisRunning && queue.Count==0)
{
break;
}
}
但是有没有内置的解决方案来管理这些事情?