草庐IT

单调双向队列

全部标签

c# - 使用 Amazon SQS 的最佳实践 - 轮询队列

我正在设计一项服务,用于为我们的电子商务网站发送电子邮件(订单确认、提醒等...)计划是有一个“SendEmail”方法,它生成一个表示要发送的电子邮件的XMLblock,并将其粘贴到AmazonSQS队列中。我的网络应用程序和其他应用程序将使用它来“发送”电子邮件。然后我需要一种检查队列并实际发送电子邮件的方法。(我知道我将如何发送电子邮件)我很好奇“轮询”队列的最佳方式是什么?我是否应该创建一个Windows服务,并使用类似Quartz.net的东西来安排它每隔x分钟检查一次队列?有更好的方法吗? 最佳答案 听起来更像Amazo

c# - .net 中的线程安全队列(列表)

我需要为要添加到lucene索引的项目创建一个线程安全列表。下面的线程安全吗?publicsealedclassIndexQueue{staticreadonlyIndexQueueinstance=newIndexQueue();privateListitems=newList();privateIndexQueue(){}publicstaticIndexQueueInstance{get{returninstance;}}privateobjectpadlock=newobject();publicvoidAddItem(stringitem){lock(padlock){ite

数据结构—双向链表

目录1. 链表的种类2. 最实用的两种链表类型3. 实现双向带头循环链表         3.1创建头节点        3.2实现双向循环功能—返回头指针        3.3 尾插          3.4头插        3.5尾删        3.6头删4. 实现两个重要接口函数        4.1随机插入         4.2随机删除5. 顺序表和链表总结1. 链表的种类 由上面的组合可以知道链表由2^3种类型2. 最实用的两种链表类型2.1单向不带头不循环链表—(之前博客实现了)     2.2双向带头循环链表3. 实现双向带头循环链表        3.1创建头节点LTN

c# - 可观察的堆栈和队列

我正在寻找Stack和Queue的INotifyCollectionChanged实现。我可以自己动手,但我不想重新发明轮子。 最佳答案 我遇到了同样的问题,想与其他人分享我的解决方案。希望这对某人有帮助。publicclassObservableStack:Stack,INotifyCollectionChanged,INotifyPropertyChanged{publicObservableStack(){}publicObservableStack(IEnumerablecollection){foreach(varitem

c# - 无法确定具有指定格式名称的队列是否存在

执行以下代码时出现异常。有什么想法吗?stringqueueName="FormatName:Direct=TCP:1.1.1.1\\Private$\\test";MessageQueuequeue;if(MessageQueue.Exists(queueName))queue=newSystem.Messaging.MessageQueue(queueName);elsequeue=MessageQueue.Create(queueName);queue.Send(sWriter.ToString());编辑:这是异常消息和堆栈跟踪的第一行Cannotdeterminewhethe

c# - 消息队列系统

我正在编写一个消息队列系统。我的问题是......用文件或数据库来做这个队列更好吗?如果我选择数据库,它需要每秒检查新作业,这对我来说似乎有点开销?如果是文件,我猜你只是不断地监视文件夹并根据它执行?BR, 最佳答案 不要reinventthewheel.[编辑:2014年更新,现在链接到rabbitMQ,因为Ayende已经开始制作文档数据库而不是消息队列,但RabbitMQ又出现了。我不会写这篇文章,但现在帖子需要30个字符,所以我需要多说几句。] 关于c#-消息队列系统,我们在St

c# - 如何(以及是否)使用 TPL 编写单一消费者队列?

我最近听到了很多关于.NET4.0中的TPL的播客。它们中的大多数描述了后台事件,例如下载图像或进行计算,使用任务以使工作不会干扰GUI线程。我处理的大部分代码更多地具有多生产者/单一消费者的风格,其中来自多个来源的工作项必须排队,然后按顺序处理。一个例子是日志记录,其中来自多个线程的日志行被顺序排列到一个队列中,以便最终写入文件或数据库。来自任何单一来源的所有记录必须保持有序,并且来自同一时刻的记录在最终输出中应该彼此“接近”。所以多个线程或任务或任何东西都在调用队列:lock(_queue)//orusealock-freequeue!{_queue.enqueue(some_wo

c# - 理解调度队列

我想我需要一些帮助来理解DispatcherQueue。当新工作到达时,它会被添加到调度程序队列的开头,而当Dispatcher想要处理工作项时,它会从开头被删除。更一般地说:如果有工作,它将以FIFO方式存储在队列中,并在没有剩余工作时进行处理。MSDN文档here是指loop和frame:Dispatcher在循环中处理工作项队列。循环称为帧。但是在这种情况下循环在哪里?对我来说,循环是指迭代某些东西,当它到达终点时,它会重新开始。frame的概念是什么?根据MSDN文档,一个框架是队列中工作项目的一部分?如果是这样,应该如何使用静态方法Disptatcher.PushFrame(

c# - 多线程.NET队列问题

我的代码中有一个奇怪的错误。这种情况极为罕见(可能每隔几周发生一次),但它确实存在,我不确定为什么。我们有2个线程在运行,1个线程获取网络消息并将它们添加到队列中,如下所示:DataMessages.Enqueue(newDataMessage(client,msg));另一个线程从这个队列中取出消息并处理它们,就像这样:while(NetworkingClient.DataMessages.Count>0){DataMessagemessage=NetworkingClient.DataMessages.Dequeue();switch(message.messageType){..

javascript - 通过回调在 JavaScript 中管理队列

我正在处理一个使用JavaScript来管理队列的页面。我的挑战是我的代码有嵌套回调。嵌套回调让我对队列的范围感到困惑。目前,我有以下内容:functionMyApp(){}module.exports=MyApp;MyApp.myQueue=[];MyApp.queueIsLocked=false;MyApp.enqueue=function(item,onSuccess,onFailure){if(!MyApp.queueIsLocked){MyApp.queueIsLocked=true;MyApp.myQueue.push(item);MyApp.queueIsLocked=f