Module: Pod::PodGenerate::Patches::MultiProjectGeneratorPatch::ParallelMultiProjectGenerator
- Defined in:
- lib/cocoapods-podgenerate/patches/multi_project_generator_patch.rb
Instance Method Summary collapse
-
#install_all_pod_targets(projects_by_pod_targets) ⇒ Object
── Optimization: Parallel install_all_pod_targets ── Each project has independent pod targets (different xcodeproj directories), so PodTargetInstaller operations can run concurrently without locking.
Instance Method Details
#install_all_pod_targets(projects_by_pod_targets) ⇒ Object
── Optimization: Parallel install_all_pod_targets ──Each project has independent pod targets (different xcodeproj directories), so PodTargetInstaller operations can run concurrently without locking.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/cocoapods-podgenerate/patches/multi_project_generator_patch.rb', line 34 def install_all_pod_targets(projects_by_pod_targets) UI. '- Installing Pod Targets (parallel)' do pool_size = compute_pool_size mutex = Mutex.new all_results = {} pool = Concurrent::FixedThreadPool.new(pool_size) projects_by_pod_targets.each do |project, pts| pool.post do target_results = install_pod_targets(project, pts) mutex.synchronize { all_results.merge!(target_results) } rescue StandardError => e mutex.synchronize do Pod::UI.warn "[cocoapods-podgenerate] Pod target install: #{e.}" end end end pool.shutdown pool.wait_for_termination all_results end end |