C++ 生产者-消费者(C+)+;使用Boost库
我正在尝试设计和实施一个程序,它将“解决”经典的生产者-消费者问题。我还将使用发布/订阅模式,并且只有一个生产者 我想到的第一件事是将每件事情作为一个单独的线程来实现,但后来我意识到这是低效的,可能有更聪明的方法来实现 我需要:C++ 生产者-消费者(C+)+;使用Boost库,c++,multithreading,boost,boost-asio,C++,Multithreading,Boost,Boost Asio,我正在尝试设计和实施一个程序,它将“解决”经典的生产者-消费者问题。我还将使用发布/订阅模式,并且只有一个生产者 我想到的第一件事是将每件事情作为一个单独的线程来实现,但后来我意识到这是低效的,可能有更聪明的方法来实现 我需要: 接受来自客户端的tcp/ip连接 使用另一个进程中的命名管道获取数据(此处命名管道可以更改为任何其他内容) 一旦我得到数据,就决定哪些客户应该得到数据并发送到那里 能够随时解析客户端命令(例如,客户端希望更改订阅详细信息) 另外,根据实现细节,我可能希望清除包含传入数
- 接受来自客户端的tcp/ip连接
- 使用另一个进程中的命名管道获取数据(此处命名管道可以更改为任何其他内容)
- 一旦我得到数据,就决定哪些客户应该得到数据并发送到那里
- 能够随时解析客户端命令(例如,客户端希望更改订阅详细信息)
- 另外,根据实现细节,我可能希望清除包含传入数据的集合(如果我需要的话)并启动非活动客户端
- 创建一个线程,该线程将接受来自客户端的连接,并将每个客户端添加到列表中
- 创建一个线程/线程池,这些线程将执行一个串(
),该串将包括从源读取数据、决定哪个客户端应获取数据以及将数据异步写入客户端boost::strand
- 这是有效的方法
- 这是一种有效的方法
- 如何从客户端添加读取命令
- 如何检查客户端不活动
如果您能就如何正确实施此类措施提出任何意见和建议,我将不胜感激 我觉得这个问题虽然提出得很好,格式也很好,结构也很合理,但对于这样的问题来说,它有点太开放了。有什么建议可以改进吗?也许可以把它转移到其他StackExchange站点?我建议你建立一个聊天室或各种各样的邮件列表,在那里你可以进行讨论。你不会得到一个让你满意的答案。我发现这个问题更适合程序员。stackexchange.com,所以我将把它移到那里。请不要。我已经说过,这是一个讨论的请求,不是一个有答案的问题。