相关疑难解决方法(0)

Linux中每个进程的最大线程数?

Linux下进程可以创建的最大线程数是多少?

如何(如果可能)可以修改此值?

linux multithreading

228
推荐指数
9
解决办法
36万
查看次数

等待条件的非线程替代方案.(编辑:带有boost.asio的前驱模式?)

我正在实现一个消息传递算法.当消息在节点处具有足够的信息来组成消息时,消息在相邻节点之间传递 - 从相邻节点传递到节点的信息.如果我将每个消息都设置为一个线程并使用boost :: condition将线程置于休眠状态直到所需信息可用,那么实现是微不足道的.

不幸的是 - 我在图中有100k节点,这意味着300k线程.当我如何制作那么多线程时,答案是我不应该 - 而是重新设计.

我的问题是:是否存在等待条件的标准设计模式? 也许是一些异步控制模式?

编辑:我想我可以用proacator模式做到这一点.我已经编辑了标签以包含boost :: asio - 以查看是否有人对此有任何建议.

所以讨论可以是具体的,这里是到目前为止如何定义消息:

class
Message
{
public:      
  Message(const Node* from, Node* to)
    : m_from(from), m_to(to)
  {}
  void
  operator()()
  {
    m_to->ReceiveMessage( m_from->ComposeMessage() );
  }
private:
  Node *m_from, *m_to;
};
Run Code Online (Sandbox Code Playgroud)

这些消息函子目前使用boost :: thread启动.然后我们有

class Node
{
    Node(Node* Neighbour1, Node* Neighbour2, Node* Neighbour3); 
   // The messages (currently threads) are created on construction, 
   // The condition locks then sort out when they actually get passed 
   // …
Run Code Online (Sandbox Code Playgroud)

c++ multithreading boost design-patterns boost-asio

6
推荐指数
1
解决办法
697
查看次数

标签 统计

multithreading ×2

boost ×1

boost-asio ×1

c++ ×1

design-patterns ×1

linux ×1