mirror of https://github.com/mastodon/mastodon
				
				
				
			Replace ThreadingHelper wait loop with functional CyclicBarrier (#36508)
							parent
							
								
									82483ed8b0
								
							
						
					
					
						commit
						843c43c97a
					
				@ -1,17 +1,18 @@
 | 
			
		||||
# frozen_string_literal: true
 | 
			
		||||
 | 
			
		||||
require 'concurrent/atomic/cyclic_barrier'
 | 
			
		||||
 | 
			
		||||
module ThreadingHelpers
 | 
			
		||||
  def multi_threaded_execution(thread_count)
 | 
			
		||||
    wait_for_start = true
 | 
			
		||||
    barrier = Concurrent::CyclicBarrier.new(thread_count)
 | 
			
		||||
 | 
			
		||||
    threads = Array.new(thread_count) do
 | 
			
		||||
      Thread.new do
 | 
			
		||||
        true while wait_for_start
 | 
			
		||||
        barrier.wait
 | 
			
		||||
        yield
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    wait_for_start = false
 | 
			
		||||
    threads.each(&:join)
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue