设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1682|回复: 4
打印 上一主题 下一主题

[有事请教] rb_protect是必须的吗?

[复制链接]

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

跳转到指定楼层
1
发表于 2011-9-30 23:41:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 yangff 于 2011-9-30 23:43 编辑

似乎rb_protect就直接把主线程抢走了开什么玩笑啊我是在WndProc里面调用啊(什么为什么要在WndProc里面调用这不是很显然嘛我是外挂的程序啊)
但是这样绝对不行啊……我Ruby是用来做解释器的怎么可以这样啊!!
要怎么弄呢?
不要多线程至少我的代码里面不要有多线程至于Ruby是怎么弄的我才不管呢……
哎呀,蛋疼什么的最有爱了

Lv1.梦旅人

梦石
0
星屑
110
在线时间
953 小时
注册时间
2007-4-25
帖子
805
2
发表于 2011-10-1 12:25:35 | 只看该作者
用 rb_protect 是为在顶层环境防止 Ruby 抛出异常后直接终止解释器主线程,如果你你传递给它的(第一个参数指向的)函数抛出异常,rb_protect 就会通过安全的方法告知调用者。如果 rb_protect 一直不返回,说明你传递给它的函数没返回。
[email protected]:~> repeat 1 fortune
Matz is nice, so we are nice.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
130 小时
注册时间
2010-6-26
帖子
404

第5届短篇游戏比赛季军

3
发表于 2011-10-1 12:46:44 | 只看该作者
rb_protect是啥表示我没用过。我只用过一个带“protect”的,“rb_eval_string_protect”。感觉没什么用,直接在这句上面加上try/catch也可以达到一样的效果。
Fijoy游戏引擎:http://www.fijoy.com/
回复 支持 反对

使用道具 举报

Lv2.观梦者

傻♂逼

梦石
0
星屑
374
在线时间
1606 小时
注册时间
2007-3-13
帖子
6562

烫烫烫开拓者

4
 楼主| 发表于 2011-10-2 10:21:29 | 只看该作者
苏小脉 发表于 2011-10-1 12:25
用 rb_protect 是为在顶层环境防止 Ruby 抛出异常后直接终止解释器主线程,如果你你传递给它的(第一个参数 ...

是这样的
我的程序用rb_require引用某个rb文件,这个rb进去是初始化环境的没有任何循环。
那么我用rb_protect会不会导致原线程无返回?
还有我用rb_require之后会在其他地方用rb_eval,rb_callfunc什么的没有执行rb_protect会不会有影响?
哎呀,蛋疼什么的最有爱了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
110
在线时间
953 小时
注册时间
2007-4-25
帖子
805
5
发表于 2011-10-2 10:52:46 | 只看该作者
yangff 发表于 2011-10-2 10:21
是这样的
我的程序用rb_require引用某个rb文件,这个rb进去是初始化环境的没有任何循环。
那么我用rb_pro ...

你先说说你传给 rb_protect 的函数是什么?

还有我用rb_require之后会在其他地方用rb_eval,rb_callfunc什么的没有执行rb_protect会不会有影响?

我在前一楼已说了 rb_protect 的作用,不知道是不是我语言没组织好。你只要能确定调用 rb_eval、rb_callfunc 后不会抛出 Ruby 异常,那可以不用 rb_protect。

点评

明白了Thx  发表于 2011-10-2 19:51
[email protected]:~> repeat 1 fortune
Matz is nice, so we are nice.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-29 06:55

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表