1
3
关闭套接字并不是什么大问题,但是正在被破坏和释放的套接字却不是问题。解决这个问题的一种方法是确保套接字比正在进行工作的io\u服务更有效。换句话说,您只需确保在io\ U服务退出之前不要删除它。显然,这并不是在所有情况下都有效。 在各种情况下,很难判断套接字在iou服务中处于活动状态时,所有工作何时真正完成,ASIO也不提供任何机制来显式删除或断开对象的回调,这样它们就不会被调用。因此,您应该考虑在SydDypTR中保持连接,这将保持连接对象直到IOIOService内部的最后引用被释放。 同时,处理函数应该处理传入的所有可能的错误,包括被破坏的连接。 |
2
1
|
3
1
正如奇拉已经回答的,只要你想,随时关闭插座是安全的。如果所讨论的套接字当时有一个未完成的操作,那么将调用处理程序/回调来通知您已取消该操作。这就是连接被中止的地方。 至于你关于SyrdypTr的问题,如果你有一个线程或其他对象引用你的套接字,我认为这是一个很大的胜利,然而,在很多情况下它是不需要的。您所要做的就是动态地分配它们,并在不再需要它们时取消分配。当然,如果有其他对象或线程引用套接字,则必须在delete/dealloc之前更新它们。这样做可以避免无效的内存访问,因为它们所指向的对象不再存在(请参阅悬挂指针)。 |
Coding Dog · Python异步函数不工作。继续跑 1 年前 |
cyka · 强制JavaScript等待单击(循环) 2 年前 |
CodeMonkey · 无法访问React[重复]中的对象值 2 年前 |
Tim · 为异步方法返回列表的最佳方式是什么? 2 年前 |
dapidmini · 未捕获的承诺嵌套异步函数承诺错误处理 2 年前 |