我希望有人告诉我使用post函数的优点(和缺点)。为什么以及何时应该更喜欢使用帖子以及为什么/何时我不想使用它?
答案 0 :(得分:9)
当您希望回调基本上现在发生时,Post非常有用,但不是在当前上下文中。原因可能包括:
当前上下文持有锁,您希望在释放函数后调用它。这将允许函数自己获取这些锁而不会导致死锁。
调用堆栈可能非常深
当前线程可能以某种其他方式不适合该函数,post是在另一个线程中调度函数的便捷方式。
答案 1 :(得分:0)
我猜测你正在将post()
与dispatch()
进行比较。通常,post()
更安全,因为dispatch()
可能会立即调用处理程序,并且在事件驱动编程中存在以意外方式影响排队事件的风险。还有一个优点是保持调用堆栈较小,并且具有更可预测的行为(dispatch()
可以现在运行或稍后运行。)
我刚发现post()
仅在当前io_service
事件/处理程序/操作完成后才删除对象。