我想到的
for iOS 1.用dispatch_group实现 2.用RunLoop实现
还有没有其他的比较好的实现方式,求关于并发编程的文章.
欢迎选择我的课程,让我们一起见证您的进步~~
那網絡請求都是異步的,同樣的處理方法嗎?
建一个block或closure。发送一个网络请求,在completionHandler中调用自身发送下一个请求。
Android肯定RxJava. iOS RxSwift?
dispatch_group_t group = dispatch_group_create();dispatch_group_enter(group);[request1 completed:^(BOOL sucess, id response){
dispatch_grpup_leave(group);
}];
dispatch_group_enter(group);[request2 completed:^(BOOL sucess, id response){
dispatch_group_enter(group);[request3 completed:^(BOOL sucess, id response){
dispatch_group_enter(group);[request4 completed:^(BOOL sucess, id response){
}];....
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
[do something];
});
感觉还是使用GCD更好,因为也可以总在c/c++代码里面
用AFNetworking的可以用AFURLConnectionOperation batchOfRequestOperations: progressBlock:completionBlock:
AFNetworking
AFURLConnectionOperation batchOfRequestOperations: progressBlock:completionBlock:
使用GCD的group
Android中使用RxJava可以轻松实现。当然,也可以试用线程同步辅助类CountDownLatch实现,CountDownLatch的使用可以参考下面博客:http://www.liuling123.com/2013/08/countdownlatch-demo.html
看到大神们的答案我震惊了,面对这样的问题我往往是手动实现的,我一般会设置一个资源变量,初始化资源为十,跑一个线程监听资源数,然后开始并发任务,每完成一个资源减一,当资源为零时停止监听线程,完成后续操作。
这是笨办法。在我对某门语言不是很了解的时候我都会这样用,毕竟大部分语言都能这样实现。
java本身的并发框架就支持解决你说的问题,Future
那網絡請求都是異步的,同樣的處理方法嗎?
建一个block或closure。发送一个网络请求,在completionHandler中调用自身发送下一个请求。
Android肯定RxJava. iOS RxSwift?
dispatch_group_t group = dispatch_group_create();
dispatch_group_enter(group);
[request1 completed:^(BOOL sucess, id response){
}];
dispatch_group_enter(group);
[request2 completed:^(BOOL sucess, id response){
}];
dispatch_group_enter(group);
[request3 completed:^(BOOL sucess, id response){
}];
dispatch_group_enter(group);
[request4 completed:^(BOOL sucess, id response){
}];
.
.
.
.
dispatch_group_notify(group, dispatch_get_main_queue(), ^{
});
感觉还是使用GCD更好,因为也可以总在c/c++代码里面
用
AFNetworking
的可以用AFURLConnectionOperation batchOfRequestOperations: progressBlock:completionBlock:
使用GCD的group
Android中使用RxJava可以轻松实现。
当然,也可以试用线程同步辅助类CountDownLatch实现,CountDownLatch的使用可以参考下面博客:
http://www.liuling123.com/2013/08/countdownlatch-demo.html
看到大神们的答案我震惊了,面对这样的问题我往往是手动实现的,我一般会设置一个资源变量,初始化资源为十,跑一个线程监听资源数,然后开始并发任务,每完成一个资源减一,当资源为零时停止监听线程,完成后续操作。
这是笨办法。在我对某门语言不是很了解的时候我都会这样用,毕竟大部分语言都能这样实现。
java本身的并发框架就支持解决你说的问题,Future