我想到的
for iOS
1.用dispatch_group实现
2.用RunLoop实现
还有没有其他的比较好的实现方式,求关于并发编程的文章.
迷茫2017-04-17 16:17:12
ブロックまたはクロージャを作成します。ネットワーク リクエストを送信し、completionHandler で自身を呼び出して次のリクエストを送信します。
PHP中文网2017-04-17 16:17:12
dispatch_group_t group =dispatch_group_create();
dispatch_group_enter(group);
[リクエスト 1 完了:^(BOOL 成功、ID 応答){
}];
dispatch_group_enter(group);
[リクエスト 2 が完了しました:^(BOOL 成功、ID 応答){
}];
dispatch_group_enter(group);
[リクエスト 3 完了:^(BOOL 成功、ID 応答){
}];
dispatch_group_enter(group);
[リクエスト 4 完了:^(BOOL 成功、ID 応答){
}];
.
.
.
.
dispatch_group_notify(group,dispatch_get_main_queue(), ^{
リーリー});
高洛峰2017-04-17 16:17:12
AFNetworking
をご利用の方はAFURLConnectionOperation batchOfRequestOperations: progressBlock:completionBlock:
ringa_lee2017-04-17 16:17:12
Android の RxJava を使用して簡単に実装できます。
もちろん、スレッド同期補助クラス CountDownLatch の実装を試すこともできます。CountDownLatch の使用方法については、次のブログを参照してください:
http://www.liuling123.com/2013/08/countdownlatch -demo.html
PHP中文网2017-04-17 16:17:12
このような問題に直面したとき、私は通常、リソース変数を設定し、リソースを 10 に初期化し、スレッドを実行してリソースの数を監視します。リソースが完了するたびに、同時タスクが開始され、リソースが 0 になると、リスニング スレッドが停止され、後続の操作が完了します。
これは愚かな考えです。結局のところ、ほとんどの言語はこの方法で実装できます。