使用Ruby MonitorMixin注意的坑

初次使用MonitorMixin控制同步执行的时候一不小心就踩坑了,当你include的时候如果你的class定义了initialize方法 请调用super否则会报undefined method `lock' for nil:NilClass错。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Number
  attr_accessor :n

  include MonitorMixin

  def initialize(*args)
    @n = 0
    super() # 调用MonitorMixin#initialize
  end

  def increase(x)
    synchronize do
      @n = @n + x
      puts("#{@n}, #{x}")
    end
  end
end

Comments

Copyright © 2017 kaka