72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/scratch.rb', line 72
def test
bsem = bsem_alloc()
class << bsem
def value
@int ||= FFI::MemoryPointer.new(:int)
LibC.call { PSem.bsem_getvalue(self, @int) }
@int.get_int(0)
end
end
puts "alloc'ed at #{bsem.inspect}"
puts LibC.call { bsem_open(bsem, "foobar", 1, 1) }
puts "opened at #{bsem.inspect}"
puts LibC.call { bsem_unlink("foobar") }
puts "unlinked"
puts "waiting for sem..."
puts "value is #{bsem.value}"
LibC.call { bsem_wait(bsem) }
puts "acquired!"
puts "value is #{bsem.value}"
LibC.call { bsem_post(bsem) }
puts "posted!"
puts "value is #{bsem.value}"
puts LibC.call { bsem_close(bsem) }
bsem_free(bsem)
end
|