設(shè)計中,我們常常遇到這樣的模型:有A、B兩個模塊,A模塊調(diào)用B模塊提供的API,然后B模塊完成任務(wù)后,調(diào)用A模塊注冊的回調(diào),通知A模塊任務(wù)完成。
需要考慮以下幾個問題:
- 在回調(diào)函數(shù)里,通常不可以有阻塞性的操作。
- 考慮添加性能統(tǒng)計。這樣如果回調(diào)時間太長影響了B的性能,B可以快速定位(甩鍋)。
- 不要在B模塊的鎖里調(diào)用A模塊的回調(diào)函數(shù)。
- 考慮將回調(diào)放到獨立的線程中去調(diào)用。
- 如果B模塊有可能在A模塊調(diào)用B的API的同一線程,直接調(diào)用回調(diào),那么B模塊應(yīng)該在API中明確說清楚。