在项目中碰到个需求,需要在SDK的回调方法(本身是需要return的)里进行网络请求把请求到的数据返回给SDK,一般的写法肯定是网络请求未完成return就先走了,导致请求的数据没法赋值给SDK本身,所以考虑用信号量对网络请求的方法进行加锁,目的是让异步的网络请求先于主线程完成,这时就会遇到一些问题,由于大多数小伙伴的网络请求都是用的AFN的框架,而AFN的网络请求虽然是在子线程中完成的但是它返回数据时却回到了主线程,所以你用AFN进行网络请求肯定会发生死锁(卡主不动),因为这时候你是对主线程进行加锁的,如果对AFN和多线程的原理不是特别懂的小伙伴肯定会特别头疼不知道问题的所在,所以就需要自己写一个网络请求,保证网络请求返回的数据时处于子线程之中,这时再对它加锁就不会造成死锁了功能需求也满足了。
网友评论