rb_yield让ruby/c++更加紧密
用c++写ruby模块提升性能效果显著一文让我初尝甜头,但未免连render都用c++也太得不尝失。自从使用了rb_yield,一切问题迎刃而解。
如代码
class Test
def foo
yield
end
end
相对应的c++代码则为
#include "ruby.h"
typedef VALUE(*RUBY_FUNC)(...);
extern "C" VALUE t_foo(VALUE self)
{
//do something by c++
rb_yield();
//do something by c++
}
VALUE cTest = rb_define_class("Test",rb_cObject);
rb_define_method(cTest,"foo",(RUBY_FUNC)t_foo,1);
非常的方便有效。
分类: 3 ruby/c++, 编程
近期评论