2

我过去在并发线程方面几乎没有经验,所以我需要一些帮助。

基本上,我拥有的是一个队列(无论是由 DI 框架作为单例还是在静态对象中管理)。我也有多个线程需要写入该队列,但是只有一个线程会出队。

由于我在线程安全方面缺乏经验,我是否需要做一些具体的事情来确保不会意外出错?考虑到其中一个要求是排队的对象必须按照它们首先发送到排队类的确切顺序。

我认为必须使用 ConcurrentQueue 是必须的吗?还是我必须开始使用排队和锁定来发挥自己的魔力?

4

2 回答 2

0

ConcurrentQueue 是一个好的开始,可能您需要知道的所有内容才能使其正常工作。注意可能在需要锁定或使用专用并发类的线程之间共享的其他资源。

于 2013-08-06T07:58:23.447 回答
0

如果你使用ConcurrentQueue,关于排队真的没有太多额外的工作要做。除非您真的被迫这样做,否则不要自己动手,多线程很难正确处理,而且调试起来一点也不有趣。

请记住,如果您有多个写入器,则插入数据的顺序可能没有严格的顺序,也就是说,如果一个线程尝试添加“A”而一个线程尝试添加“B”,则它们添加的顺序最终可能会有所不同,只是时间略有不同。

于 2013-08-06T07:59:18.030 回答