Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ boost::asio::io_服务-为什么要使用post功能?_C++_Boost - Fatal编程技术网

C++ boost::asio::io_服务-为什么要使用post功能?

C++ boost::asio::io_服务-为什么要使用post功能?,c++,boost,C++,Boost,我希望有人告诉我使用post功能的优点(和缺点)。为什么和什么时候我更喜欢使用post,为什么/什么时候我不想使用它?当您希望回调基本上现在就发生,但不是在当前上下文中发生时,post非常有用。原因可能包括: 当前上下文持有锁,您希望在释放锁后调用该函数。这将允许函数自己获取这些锁,而不会导致死锁 调用堆栈可能非常深 在其他方面,当前线程可能不适合该函数,而post是在另一个线程中调度该函数的方便方法 我猜你是在比较post()和dispatch()。一般来说,post()更安全,因为disp

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

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

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

  • 调用堆栈可能非常深

  • 在其他方面,当前线程可能不适合该函数,而post是在另一个线程中调度该函数的方便方法


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


我刚刚发现
post()
仅在当前
io\u服务完成后才可用于删除对象。

这可能会引起您的兴趣”“谢谢您的提示!我不知道:-)@ArunMu:我以前注意到过这个链接,我希望得到一个更详细的答案。@eve你应该在正文中说明你的问题与前一个问题不同的原因,而不是评论。