84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
我想到的
for iOS 1.用dispatch_group实现 2.用RunLoop实现
还有没有其他的比较好的实现方式,求关于并发编程的文章.
欢迎选择我的课程,让我们一起见证您的进步~~
有人说了 NSOperation,我就不说了。但我更喜欢 GCD。这个问题可以用 barrier 解决:
dispatch_queue_t queue = dispatch_queue_create("JOHNSHAW", DISPATCH_QUEUE_CONCURRENT); dispatch_async(queue, ^{ NSLog(@"task 1"); sleep(1); }); dispatch_async(queue, ^{ NSLog(@"task 2"); sleep(1); }); dispatch_barrier_async(queue, ^{ NSLog(@"after task 1 and task 2"); sleep(1); }); dispatch_async(queue, ^{ NSLog(@"do someting else"); });
其实我更喜欢 RAC,不过 RAC 毕竟是个重型框架,用的公司并不多
RACSignal *task1 = ...; RACSignal *task2 = ...; [[RACSignal combineLatest:@[task1,task2]] subscribeNext:^(id x) { NSLog(@"after task1 and task2 "); }];
用RxAndroid。一个.zip方法就搞定了。。
比较好的方式使用NSOperation 因为有addDependecy方法~
For javascript:
https://github.com/caolan/async处理异步的并行与串行都很方便
用jQuery的Promise, 或其它库的Promise实现 :)
借鉴下map reduce方法,类似于归并排序的思路
正常使用 dispatch_group_wait 和 dispatch_group_notify 就好了。
还可以使用 dispatch_barrier_sync / dispatch_barrier_async,将收到所有响应之后的操作用作 barrier block,那么这个 block 就会等待所有网络请求结束之后再执行。
不知道你问的Android还是iOS, 如果是Android用CountDownLatch来控制线程吧
java的话,用concurrent包的future api可以实现多线程分别请求,然后全部响应后处理结果。
for iOS创建一个串行队列处理。不影响外部并发请求。
JS中如何实现呢?
有人说了 NSOperation,我就不说了。
但我更喜欢 GCD。这个问题可以用 barrier 解决:
其实我更喜欢 RAC,不过 RAC 毕竟是个重型框架,用的公司并不多
用RxAndroid。一个.zip方法就搞定了。。
比较好的方式使用NSOperation 因为有addDependecy方法~
For javascript:
https://github.com/caolan/async
处理异步的并行与串行都很方便
用jQuery的Promise, 或其它库的Promise实现 :)
借鉴下map reduce方法,类似于归并排序的思路
正常使用 dispatch_group_wait 和 dispatch_group_notify 就好了。
还可以使用 dispatch_barrier_sync / dispatch_barrier_async,将收到所有响应之后的操作用作 barrier block,那么这个 block 就会等待所有网络请求结束之后再执行。
不知道你问的Android还是iOS, 如果是Android用CountDownLatch来控制线程吧
java的话,用concurrent包的future api可以实现多线程分别请求,然后全部响应后处理结果。
for iOS
创建一个串行队列处理。不影响外部并发请求。
JS中如何实现呢?