在项目中碰到个需求,需要在SDK的回调方法(本身是需要return的)里进行网络请求把请求到的数据返回给SDK,一般的写法肯定是网络请求未完成return就先走了,导致请求的数据没法赋值给SDK本身,所以考虑用信号量对网络请求的方法进行加锁,目的是让异步的网络请求先于主线程完成,这时就会遇到一些问题,由于大多数小伙伴的网络请求都是用的AFN的框架,而AFN的网络请求虽然是在子线程中完成的但是它返回数据时却回到了主线程,所以你用AFN进行网络请求肯定会发生死锁(卡主不动),因为这时候你是对主线程进行加锁的,如果对AFN和多线程的原理不是特别懂的小伙伴肯定会特别头疼不知道问题的所在,所以就需要自己写一个网络请求,保证网络请求返回的数据时处于子线程之中,这时再对它加锁就不会造成死锁了功能需求也满足了。
多线程信号量加锁,异步网络请求先于主线程完成
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 作为一名研究生毕业已经好几年的上进女青年,关于我斥巨资报辅导班学英语的历程在之前一篇文章(然而,他们的出众并不能助...