2

我正在使用活动对象设计模式。

我需要一个列表,其中包含相同类型的用户定义对象。多个写入者将对象推送到列表中,读取者可以定时在队列中等待。

我知道我可以包装一个 STL 列表,但也许在 boost 中有现成的解决方案?我就是找不到。

升级版:

该应用程序在 Linux (RHEL 5.3) 上运行。

4

6 回答 6

1

我在我的博客上写了一篇关于如何使用 boost over 编写线程安全队列的文章:

http://www.justsoftwaresolutions.co.uk/threading/implementing-a-thread-safe-queue-using-condition-variables.html

于 2010-07-12T13:16:23.330 回答
1

有,它被称为互斥体。(可锁定提升..)

于 2009-12-11T08:29:48.143 回答
0

没有已经构建的解决方案,但您会找到所需的积木。查看 boost::thread 库或您当前正在使用的线程库中的文档,以了解如何授予独占访问权限。通常是通过mutex某种方式。

于 2009-12-11T08:35:50.363 回答
0

这种类型的容器称为有界/阻塞队列

试试这个代码项目页面的 ac# 示例

Joe Duffy 在《Windows 上的并发编程》一书中很好地解释了整个概念

于 2009-12-11T09:18:43.150 回答
0

如果您使用的是 Windows,则 microsoft 提供来自多生产者多消费者无锁列表的代码。

查找互锁单链表

于 2009-12-11T08:53:01.700 回答
0

如果对象是 POD 类型,您可以将它们写入 Linux 上的 socketpair 并获得您期望的行为。

于 2009-12-15T12:53:19.133 回答