QNConcurrentResumeUpload.m 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. //
  2. // QNConcurrentResumeUpload.m
  3. // QiniuSDK
  4. //
  5. // Created by WorkSpace_Sun on 2019/7/15.
  6. // Copyright © 2019 Qiniu. All rights reserved.
  7. //
  8. #import "QNLogUtil.h"
  9. #import "QNConcurrentResumeUpload.h"
  10. @interface QNConcurrentResumeUpload()
  11. @property(nonatomic, strong) dispatch_group_t uploadGroup;
  12. @property(nonatomic, strong) dispatch_queue_t uploadQueue;
  13. @end
  14. @implementation QNConcurrentResumeUpload
  15. - (int)prepareToUpload{
  16. self.uploadGroup = dispatch_group_create();
  17. self.uploadQueue = dispatch_queue_create("com.qiniu.concurrentUpload", DISPATCH_QUEUE_SERIAL);
  18. return [super prepareToUpload];
  19. }
  20. - (void)uploadRestData:(dispatch_block_t)completeHandler {
  21. QNLogInfo(@"key:%@ 并发分片", self.key);
  22. for (int i = 0; i < self.config.concurrentTaskCount; i++) {
  23. dispatch_group_enter(self.uploadGroup);
  24. dispatch_group_async(self.uploadGroup, self.uploadQueue, ^{
  25. [super performUploadRestData:^{
  26. dispatch_group_leave(self.uploadGroup);
  27. }];
  28. });
  29. }
  30. dispatch_group_notify(self.uploadGroup, self.uploadQueue, ^{
  31. completeHandler();
  32. });
  33. }
  34. @end