【问题标题】:boost::asio::io_service - why use post function?boost::asio::io_service - 为什么使用 post 功能?
【发布时间】:2011-07-31 10:08:21
【问题描述】:

我希望有人告诉我使用 post 功能的优点(和缺点)。我为什么以及何时应该更喜欢使用 post 以及为什么/何时不想使用它?

【问题讨论】:

  • 这可能会让你感兴趣 "stackoverflow.com/questions/2326588/…"
  • 感谢您的提示!我不知道:-)
  • @ArunMu:我之前注意到这个链接,我希望得到一个扩展的答案。
  • @eve 您应该在正文中说明您的问题与前一个问题不同的原因,而不是评论。

标签: c++ boost


【解决方案1】:

当您希望回调基本上现在发生但不在当前上下文中时,Post 非常有用。原因可能包括:

  • 当前上下文持有锁,您希望在释放锁后调用该函数。这将允许函数自己获取这些锁而不会导致死锁。

  • 调用堆栈可能很深

  • 当前线程可能在某些方面不适合该函数,而 post 是在另一个线程中调度该函数的便捷方式。

【讨论】:

    【解决方案2】:

    我猜你是在比较 post()dispatch()。一般来说,post() 更安全,因为dispatch() 可能会立即调用处理程序,并且在事件驱动编程中存在您以意想不到的方式影响排队事件的风险。保持调用堆栈较小以及具有更可预测的行为也有好处(dispatch()可能现在运行或可能稍后运行)。

    我刚刚发现 post() 只有在当前的 io_service 事件/处理程序/操作完成后才能删除对象。

    【讨论】:

      猜你喜欢
      • 2012-11-26
      • 1970-01-01
      • 2013-06-13
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      相关资源
      最近更新 更多