C/C++ 中的多线程状态机实现
Posted
技术标签:
【中文标题】C/C++ 中的多线程状态机实现【英文标题】:Multithreaded State Machine Implementation in C/C++ 【发布时间】:2016-04-01 15:22:39 【问题描述】:我们有一个软件设计,具有不同的线程:一个线程正在侦听套接字上的传入请求,并根据请求发送一个事件以供状态机线程读取。
状态机线程读取事件,执行操作(大部分时间通知另一个线程或产生一个),并等待新事件。
我一直在检查 epoll,但我也读到了 boost 有助于实现这一点。有什么建议吗?
这是在嵌入式 Linux 系统上编程的。
谢谢
【问题讨论】:
您能否向我们展示您迄今为止的尝试,以及为什么它们没有奏效? 使用 pthread 库。它在 C 中可用,很可能在 C++ 中可用。 我正在为我的线程使用 pthreads,但我更好奇如何实现它们之间的通信的理想实现。 嗯,大概是一个生产者-消费者队列。 condvar+mutex. 没有语言“C/C++”。选择一个,它将极大地影响实现和架构。 【参考方案1】:对于线程:std::thread 或 boost::thread
对于套接字 I/O:boost::asio
对于状态机:boost::statechart 或 boost::msm
在一个很棒的图书馆里绝对有你需要的一切。
【讨论】:
嗯...太好了。如果它回答了这个问题:( @MartinJames 该操作要求提供建议。这是问题中唯一的问题。 Boost 附带全面的文档。我敢肯定他是个聪明的家伙,可以从那里得到它。我还能说什么?他没有要求设计大纲。如果他这样做了,他的问题将作为题外话被关闭。以上是关于C/C++ 中的多线程状态机实现的主要内容,如果未能解决你的问题,请参考以下文章