2017-02-23 42 views
0

继红宝石无限循环停止交流功能是我的方案,使用RubyFFI

    1. 我打电话叫交流功能使用Ruby FFI
    2. 子功能无限运行在Ruby中“订阅”而循环
    3. 我需要一种方法来阻止这种红宝石订阅(需要停止它运行无限的C函数)

红宝石

require 'ffi' 

module Queue 
    extend FFI::Library 
    ffi_lib FFI::Library::LIBC 
    attach_function :subscribe, [ :void], :void 
end 

Thread.new { Queue.subscribe() } 

C-程序

int subscribe(){ 
    while(true){ 
    //Do Stuff 
    } 
} 

有什么想法?有没有更好的方法来管理?

回答

1

我不认为你应该认为这是停止函数,它更像是停止函数运行的线程。函数通常不能被“停止”。这意味着什么?它不能只是消失,如果它正在执行一个指令,CPU应该做什么呢?

但是,线程是可调度的执行单元,它们可以被销毁。你需要阅读你正在使用的线程API(也许那个Thread.new()调用返回的东西?)并从那里找出它。

+0

是的,有同样的想法。 – Muthukumar