连续检查队列我想要一个函数,可以在一个线程上连续检查队列是否有新添加。显然,有一个选项可以连续循环播放睡眠,但我想减少浪费。我考虑了某种类型的等待句柄,然后让队列发出信号,但我不能安全地覆盖Enqueue,因为它不是虚拟的。目前我正在考虑封装一个Queue作为我最好的选择,但是如果有更好的选择,我想问问你们!我的想法是:我想允许多线程访问套接字连接,同时保证它们只读取消息的响应,所以我将有一个线程分派并读取响应,然后使用响应数据(纯文本)执行回调尝试阻塞队列:在.NET中创建阻塞队列?基本思想是,当您调用TryDequeue时,它??会阻塞,直到队列中有内容为止。如您所见,阻塞队列的“优点”在于您不必轮询/休眠或做任何疯狂的事情……这是生产者/消费者模式的基本支柱。我的阻塞队列版本是:publicclassBlockingQueuewhereT:class{privateboolclosing;私有只读队列queue=newQueue();publicintCount{get{lock(queue){returnqueue.Count;}}}publicBlockingQueue(){锁(队列){closing=false;Monitor.PulseAll(队列);}}publicboolEnqueue(Titem){lock(queue){if(closing||null==item){returnfalse;}队列.Enqueue(项目);if(queue.Count==1){//唤醒任何阻塞的出队Monitor.PulseAll(queue);}返回真;}}publicvoidClose(){lock(queue){if(!closing){closing=true;队列.清除();Monitor.PulseAll(队列);}}}publicboolTryDequeue(outTvalue,inttimeout=Timeout.Infinite){lock(queue){while(queue.Count==0){if(closing||(timeout)非常感谢MarcGravell!以上就是C#学习教程:持续查看队列分享的全部内容,如果对大家有用还需要进一步了解C#学习教程,希望大家多多关注~本文收集自网络,确实不代表立场,如涉及侵权,请点右联系管理员删除,如需转载请注明出处:
