Sha256: 3854602162c8c6b06b2978d710c3d988153eb84cdf41100a0a082f59cbc3f2b5

Contents?: true

Size: 872 Bytes

Versions: 59

Compression:

Stored size: 872 Bytes

Contents

module Listen
  # @private api
  module Internals
    module ThreadPool
      def self.add(&block)
        Thread.new { block.call }.tap do |th|
          (@threads ||= Queue.new) << th
        end
      end

      def self.stop
        return unless @threads ||= nil
        return if @threads.empty? # return to avoid using possibly stubbed Queue

        killed = Queue.new
        # You can't kill a read on a descriptor in JRuby, so let's just
        # ignore running threads (listen rb-inotify waiting for disk activity
        # before closing)  pray threads die faster than they are created...
        limit = RUBY_ENGINE == 'jruby' ? [1] : []

        killed << @threads.pop.kill until @threads.empty?
        until killed.empty?
          th = killed.pop
          th.join(*limit) unless th[:listen_blocking_read_thread]
        end
      end
    end
  end
end

Version data entries

59 entries across 50 versions & 11 rubygems

Version Path
vagrant-unbundled-2.2.10.0 vendor/bundle/ruby/2.7.0/gems/listen-3.2.1/lib/listen/internals/thread_pool.rb
vagrant-unbundled-2.2.9.0 vendor/bundle/ruby/2.7.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb
files.com-1.0.55 docs/vendor/bundle/ruby/2.5.0/gems/listen-3.0.8/lib/listen/internals/thread_pool.rb
vagrant-unbundled-2.2.8.0 vendor/bundle/ruby/2.7.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb
vagrant-unbundled-2.2.7.0 vendor/bundle/ruby/2.6.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb
vagrant-unbundled-2.2.7.0 vendor/bundle/ruby/2.7.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb
vagrant-unbundled-2.2.7.0 vendor/bundle/ruby/2.4.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb
honeybadger-4.5.3 vendor/bundle/ruby/2.6.0/gems/listen-3.0.8/lib/listen/internals/thread_pool.rb
listen-3.2.1 lib/listen/internals/thread_pool.rb
vagrant-unbundled-2.2.6.2 vendor/bundle/ruby/2.6.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb
chatops-rpc-0.0.2 fixtures/chatops-controller-example/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb
chatops-rpc-0.0.1 fixtures/chatops-controller-example/vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb
vagrant-unbundled-2.2.6.1 vendor/bundle/ruby/2.6.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb
vagrant-unbundled-2.2.6.0 vendor/bundle/ruby/2.6.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb
listen-3.2.0 lib/listen/internals/thread_pool.rb
vagrant-unbundled-2.2.5.0 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb
vagrant-unbundled-2.2.5.0 vendor/bundle/ruby/2.6.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb
vagrant-unbundled-2.2.4.0 vendor/bundle/ruby/2.5.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb
vagrant-unbundled-2.2.4.0 vendor/bundle/ruby/2.6.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb
alimentos-alu0100945645-0.1.0 vendor/bundle/ruby/2.3.0/gems/listen-3.1.5/lib/listen/internals/thread_pool.rb