Class: XThreads::XThread

Inherits:
Object
  • Object
show all
Defined in:
lib/xthreads.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, args, options = {}, &blk) ⇒ XThread

Returns a new instance of XThread.



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/xthreads.rb', line 15

def initialize(name, args, options={}, &blk)
  opts = {interval: 4, loop: true}.merge(options)
  @name = name
  @initialized = true
  @state = :stop

  @thread = Thread.new(*args)do 
    puts "#{name} created\n"
    Thread.current['name'] = name
    loop = true
    while loop == true do

      #puts '@state : ' + @state.inspect

      if @state == :start then
        r = blk.call(args)
        @result = r
        Thread.current[:result] = r
        #@state = :dead
        loop = false if opts[:loop] == false
      else
        #puts 'stopped' unless @initialized == true
        @initialized = false
      end 

      Thread.stop if @state == :stop

      sleep opts[:interval]
    end
  end

end

Instance Attribute Details

#resultObject (readonly)

Returns the value of attribute result.



13
14
15
# File 'lib/xthreads.rb', line 13

def result
  @result
end

#stateObject (readonly)

Returns the value of attribute state.



13
14
15
# File 'lib/xthreads.rb', line 13

def state
  @state
end

Instance Method Details

#killObject



59
60
61
62
63
# File 'lib/xthreads.rb', line 59

def kill
  puts 'XThread killed'
  @thread.kill
  @state = :dead
end

#startObject



48
49
50
51
52
# File 'lib/xthreads.rb', line 48

def start
  puts "#{@name} starting ..."
  @state = :start
  @thread.run
end

#stopObject



54
55
56
57
# File 'lib/xthreads.rb', line 54

def stop
  puts "'#{@name}' stopping ..."
  @state = :stop
end

#threadObject



65
66
67
# File 'lib/xthreads.rb', line 65

def thread
  @thread
end