1

在挖掘cont.cRuby 当前版本的代码时,我想知道这一点。的文档setjmp说,在返回的调用者之后longjmp调用jmp_buf 结构是一个错误。但是,Ruby 似乎很高兴地做到了这一点并且没有崩溃:setjmp

https://github.com/ruby/ruby/blob/05f087c844f0e1e7cfe323edcf591de64069a289/cont.c#L522 https://github.com/ruby/ruby/blob/05f087c844f0e1e7cfe323edcf591de64069a289/cont.c#L775(+ 更多纤维的使用) )

我问:这怎么可能?

我确实注意到相同的源代码也使用了set/getcontext,但似乎只使用了 fiber 。在我看来,使用这些函数而不是set/longjmp.

4

0 回答 0