异步程序的难搞之处

1. 任务完成的顺序与代码被执行的顺序未必相同。 先调用asyncA(), 再调用asyncB(),但最后可能是B任务率先完成。

2. 有时候不知道代码走到当前此处的根本原因,给调试带来麻烦。 同步程序中,总是可以在调用栈的底部找到触发当前操作的原因,而异步程序中,走到这里可能是因为另一个线程做了什么操作,修改了公有变量,导致本线程走到这里; 那么是哪个线程做什么操作,需要对代码非常熟悉才知道。

3. Callback中出了异常,主线程往往不知道,写在主线程代码里的异常处理机制没被触发。

待续 。。。

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.