【问题标题】:Multithreaded State Machine Implementation in C/C++C/C++ 中的多线程状态机实现
【发布时间】:2016-04-01 15:22:39
【问题描述】:

我们有一个软件设计,具有不同的线程:一个线程正在侦听套接字上的传入请求,并根据请求发送一个事件以供状态机线程读取。

状态机线程读取事件,执行操作(大部分时间通知另一个线程或产生一个),并等待新事件。

我一直在检查 epoll,但我也读到了 boost 有助于实现这一点。有什么建议吗?

这是在嵌入式 Linux 系统上编程的。

谢谢

【问题讨论】:

  • 您能否向我们展示您迄今为止的尝试,以及为什么它们没有奏效?
  • 使用 pthread 库。它在 C 中可用,很可能在 C++ 中可用。
  • 我正在为我的线程使用 pthreads,但我更好奇如何实现它们之间的通信的理想实现。
  • 嗯,大概是一个生产者-消费者队列。 condvar+mutex.
  • 没有语言“C/C++”。选择一个,它将极大地影响实现和架构。

标签: c++ c linux multithreading embedded-linux


【解决方案1】:

对于线程:std::thread 或 boost::thread

对于套接字 I/O:boost::asio

对于状态机:boost::statechart 或 boost::msm

在一个很棒的图书馆里绝对有你需要的一切。

【讨论】:

  • 嗯...太好了。如果它回答了这个问题:(
  • @MartinJames 该操作要求提供建议。这是问题中唯一的问题。 Boost 附带全面的文档。我敢肯定他是个聪明的家伙,可以从那里得到它。我还能说什么?他没有要求设计大纲。如果他这样做了,他的问题将作为题外话被关闭。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
  • 2010-09-24
  • 1970-01-01
相关资源
最近更新 更多