Module: Yoshinon

Defined in:
lib/yoshinon.rb,
lib/yoshinon/deshite.rb,
lib/yoshinon/version.rb,
sig/yoshinon.rbs,
sig/yoshinon/deshite.rbs,
sig/yoshinon/version.rbs

Defined Under Namespace

Classes: Deshite

Constant Summary collapse

VERSION =

Returns:

  • (String)
'1.0.1'

Class Method Summary collapse

Class Method Details

.define_trap(signal) ⇒ void

This method returns an undefined value.

Parameters:

  • signal (interned, Integer)


17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/yoshinon.rb', line 17

def self.define_trap(signal)
  Signal.trap(signal) do |value|
    @on_trap.each { |e| e.call(value) }
  ensure
    Thread.new do
      @mutex.synchronize do
        @cv.wait(@mutex) until @deshite_set.empty?
      end
      exit(128 + value)
    end
  end
end

.lockDeshite .lockvoid

Overloads:

  • .lockDeshite

    Returns:

  • .lockvoid

    This method returns an undefined value.



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/yoshinon.rb', line 30

def self.lock
  if block_given?
    deshite = lock
    begin
      yield
    ensure
      unlock(deshite)
    end
  else
    deshite = Deshite.new
    @mutex.synchronize do
      @deshite_set << deshite
    end
    deshite
  end
end

.on_trap {|arg0| ... } ⇒ void

This method returns an undefined value.

Yields:

Yield Parameters:

  • arg0 (Integer)

Yield Returns:

  • (void)


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

def self.on_trap(&block)
  @on_trap << block
end

.unlock(deshite) ⇒ void

This method returns an undefined value.

Parameters:



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

def self.unlock(deshite)
  @mutex.synchronize do
    @deshite_set.delete(deshite)
    @cv.broadcast
  end
end