0

以下是我的场景,

    1. 我使用 Ruby FFI 从 Ruby 调用名为“subscribe”的 ac 函数
    2. 子函数在while循环中无限运行
    3. 我需要一种方法来停止从 Ruby 订阅此订阅(需要停止无限运行的 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
   }
}

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

4

1 回答 1

1

我认为您不应该将其视为停止函数,它更像是停止函数运行的线程。函数通常不能“停止”;这意味着什么?它不能就这样消失,如果它正在执行一条指令,那么 CPU 应该怎么做呢?

然而,线程是可调度的执行单元,它们可以被销毁。您需要阅读您正在使用的线程 API(也许该Thread.new()调用会返回一些东西?)并从那里弄清楚。

于 2017-02-23T16:27:33.387 回答