• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ruby-concurrency / concurrent-ruby / #2711

16 Jun 2014 12:13PM UTC coverage: 45.896% (-50.5%) from 96.422%
#2711

push

jdantonio
Merge pull request #112 from ruby-concurrency/remove-old-actor

Remove old Actor

1 of 2 new or added lines in 2 files covered. (50.0%)

1362 existing lines in 62 files now uncovered.

1219 of 2656 relevant lines covered (45.9%)

0.98 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

57.58
/lib/concurrent/executor/ruby_single_thread_executor.rb
1
require_relative 'executor'
1✔
2

3
module Concurrent
1✔
4

5
  # @!macro single_thread_executor
6
  class RubySingleThreadExecutor
1✔
7
    include RubyExecutor
1✔
8

9
    # Create a new thread pool.
10
    #
11
    # @see http://docs.oracle.com/javase/tutorial/essential/concurrency/pools.html
12
    # @see http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html
13
    # @see http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutorService.html
14
    def initialize(opts = {})
1✔
15
      @queue = Queue.new
1✔
16
      @thread = nil
1✔
17
      init_executor
1✔
18
    end
19

20
    protected
1✔
21

22
    # @!visibility private
23
    def execute(*args, &task)
1✔
UNCOV
24
      supervise
×
UNCOV
25
      @queue << [args, task]
×
26
    end
27

28
    # @!visibility private
29
    def shutdown_execution
1✔
UNCOV
30
      @queue << :stop
×
UNCOV
31
      stopped_event.set unless alive?
×
32
    end
33

34
    # @!visibility private
35
    def kill_execution
1✔
36
      @queue.clear
1✔
37
      @thread.kill if alive?
1✔
38
    end
39

40
    # @!visibility private
41
    def alive?
1✔
42
      @thread && @thread.alive?
1✔
43
    end
44

45
    # @!visibility private
46
    def supervise
1✔
UNCOV
47
      @thread = new_worker_thread unless alive?
×
48
    end
49

50
    # @!visibility private
51
    def new_worker_thread
1✔
UNCOV
52
      Thread.new do
×
UNCOV
53
        Thread.current.abort_on_exception = false
×
UNCOV
54
        work
×
55
      end
56
    end
57

58
    # @!visibility private
59
    def work
1✔
UNCOV
60
      loop do
×
UNCOV
61
        task = @queue.pop
×
UNCOV
62
        break if task == :stop
×
63
        begin
UNCOV
64
          task.last.call(*task.first)
×
65
        rescue => ex
66
          # let it fail
67
          log DEBUG, ex
×
68
        end
69
      end
UNCOV
70
      stopped_event.set
×
71
    end
72
  end
73
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc