From: Bernd Kiefer Date: 2013-03-16T06:24:40+09:00 Subject: Different behaviour of control-c for 1.9.2-p290/2.0.0-p0 Hello, why can the following example code be successfully stopped by control-c using ruby 1.9.2-p290 but NOT using ruby 2.0.0-p0 (control-c is ignored) ? Any idea ? Cheers require 'ffi-inliner' require 'fiber' module Test extend FFI::Library extend Inliner inline <<-'EOF' // ***************************************************** // * Shared library functions // ***************************************************** unsigned int i = 0; void func1() { printf("Starting func1\n"); while(1) { my_wait(1); // printf("Loop func1: %u\n", i); i++; } } void func2() { printf("Starting func2\n"); while(1) { my_wait(2); // printf("Loop func2: %u\n", i); } } // ***************************************************** // * Bridge functions // ***************************************************** void (*my_wait_function)(unsigned int); void register_my_wait_function(void *p) { my_wait_function = p; } void my_wait(unsigned int i) { (*my_wait_function)(i); } EOF callback :cb_my_wait, [:uint], :void attach_function :register_my_wait_function, [:cb_my_wait], :void attach_function :func1, [], :void attach_function :func2, [], :void attach_variable :i, :uint FUNC = Proc.new do |id| if id==1 @fib2.resume else p i if (i%100000)==0 Fiber.yield end end register_my_wait_function FUNC self.i = 0 @fib1 = Fiber.new do func1 end @fib2 = Fiber.new do func2 end @fib1.resume end -- Posted via http://www.ruby-forum.com/.