设计中,我们常常遇到这样的模型:有A、B两个模块,A模块调用B模块提供的API,然后B模块完成任务后,调用A模块注册的回调,通知A模块任务完成。
需要考虑以下几个问题:
- 在回调函数里,通常不可以有阻塞性的操作。
- 考虑添加性能统计。这样如果回调时间太长影响了B的性能,B可以快速定位(甩锅)。
- 不要在B模块的锁里调用A模块的回调函数。
- 考虑将回调放到独立的线程中去调用。
- 如果B模块有可能在A模块调用B的API的同一线程,直接调用回调,那么B模块应该在API中明确说清楚。
设计中,我们常常遇到这样的模型:有A、B两个模块,A模块调用B模块提供的API,然后B模块完成任务后,调用A模块注册的回调,通知A模块任务完成。
需要考虑以下几个问题: