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
