注册
登录
会员
标签
奖励
统计
帮助
Ruby中文社区论坛
»
我是新手
» 提个问题,关于Ruby实现伪多进程
‹‹ 上一主题
|
下一主题 ››
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
打印
提个问题,关于Ruby实现伪多进程
snerix
初入江湖
个人空间
发短消息
加为好友
当前离线
1
#
大
中
小
发表于 2008-7-31 08:33
只看该作者
提个问题,关于Ruby实现伪多进程
各位:
目前我想用ruby在windows上实现以下事情,起2个进程(或线程),
其中一号进程(线程)读取命令行的用户输入并做出响应;
二号进程(线程)后台处理文件,当处理到某个特定文件的时候自动关闭一号和二号进程(线程),程序自动进入另外的处理。
以上内容我尝试使用ruby的线程实现,但是获取命令行输入使用gets方法,就会发生阻塞,二号线程一直被阻塞,郁闷啊
在linux下使用fork就很得心应手,但是想在linux上实现 应该怎么做啊,请大家指教
代码如下 请指教
$flag = 0
$sat = 0
thr1 = Thread.new do
while 1
puts "WAIT>"
str = $stdin.gets
if str.chomp == "exit"
break
else
puts str
end
end
if($sat == 1)
Thread.pass
end
#sleep 1
end
thr2 = Thread.new do
while 1
if ($flag > 200) then
thr1.kill
exit
end
$flag += 1
puts $flag
$sat = 1
sleep 1
$sat = 0
end
end
thr1.join
puts "All end"
#eof
UID
6892
帖子
11
精华
0
R币
14
阅读权限
2
在线时间
4 小时
注册时间
2008-6-2
最后登录
2008-8-1
查看详细资料
TOP
黑马
黑马
Ruby游荡者
个人空间
发短消息
加为好友
当前离线
2
#
大
中
小
发表于 2008-7-31 10:28
只看该作者
你的程序跑的可以距,2号线程并没有阻塞呀.如果阻塞了,你的puts $flag怎么能输出值出来了?
UID
53
帖子
129
精华
0
R币
337
阅读权限
150
在线时间
218 小时
注册时间
2007-6-21
最后登录
2008-11-29
查看个人网站
查看详细资料
TOP
snerix
初入江湖
个人空间
发短消息
加为好友
当前离线
3
#
大
中
小
发表于 2008-7-31 11:25
只看该作者
我想让2号线程独立运行
但目前的情况是程序运行了一号线程打印出“WAIT>”
然后二号线程打印出 $flag的值 “1”
然后程序就等待了 (此时整个程序是卡在一号线程的 str = $stdin.gets语句上)
一定要用户在命令行上输入点什么按个回车
程序才能继续处理
一号线程再打印出“WAIT>”
然后二号线程再打印出 $flag的值 “2”
然后又卡在一号线程的“gets”了
二号线程也歇菜不走了。。。
怎么让二号线程能独立的动起来啊?
UID
6892
帖子
11
精华
0
R币
14
阅读权限
2
在线时间
4 小时
注册时间
2008-6-2
最后登录
2008-8-1
查看详细资料
TOP
黑马
黑马
Ruby游荡者
个人空间
发短消息
加为好友
当前离线
4
#
大
中
小
发表于 2008-7-31 12:14
只看该作者
没有,我的运行情况是,在1号在wait的时候,2号不断的在打印值,说明2号线程并没有阻塞.
UID
53
帖子
129
精华
0
R币
337
阅读权限
150
在线时间
218 小时
注册时间
2007-6-21
最后登录
2008-11-29
查看个人网站
查看详细资料
TOP
snerix
初入江湖
个人空间
发短消息
加为好友
当前离线
5
#
大
中
小
发表于 2008-7-31 13:08
只看该作者
呃?您用得什么 ide环境?
UID
6892
帖子
11
精华
0
R币
14
阅读权限
2
在线时间
4 小时
注册时间
2008-6-2
最后登录
2008-8-1
查看详细资料
TOP
snerix
初入江湖
个人空间
发短消息
加为好友
当前离线
6
#
大
中
小
发表于 2008-7-31 13:12
只看该作者
在什么环境下运行的啊?
UID
6892
帖子
11
精华
0
R币
14
阅读权限
2
在线时间
4 小时
注册时间
2008-6-2
最后登录
2008-8-1
查看详细资料
TOP
snerix
初入江湖
个人空间
发短消息
加为好友
当前离线
7
#
大
中
小
发表于 2008-7-31 13:59
只看该作者
顶楼的程序是在windows下运行有问题,请大家帮忙指点
UID
6892
帖子
11
精华
0
R币
14
阅读权限
2
在线时间
4 小时
注册时间
2008-6-2
最后登录
2008-8-1
查看详细资料
TOP
黑马
黑马
Ruby游荡者
个人空间
发短消息
加为好友
当前离线
8
#
大
中
小
发表于 2008-7-31 15:52
只看该作者
我在linux下运行的,,
UID
53
帖子
129
精华
0
R币
337
阅读权限
150
在线时间
218 小时
注册时间
2007-6-21
最后登录
2008-11-29
查看个人网站
查看详细资料
TOP
snerix
初入江湖
个人空间
发短消息
加为好友
当前离线
9
#
大
中
小
发表于 2008-7-31 15:53
只看该作者
已经自己解决了。。
各位打扰了。。。。
UID
6892
帖子
11
精华
0
R币
14
阅读权限
2
在线时间
4 小时
注册时间
2008-6-2
最后登录
2008-8-1
查看详细资料
TOP
snerix
初入江湖
个人空间
发短消息
加为好友
当前离线
10
#
大
中
小
发表于 2008-7-31 15:54
只看该作者
windows和linux有很大的区别,,,,
UID
6892
帖子
11
精华
0
R币
14
阅读权限
2
在线时间
4 小时
注册时间
2008-6-2
最后登录
2008-8-1
查看详细资料
TOP
snerix
初入江湖
个人空间
发短消息
加为好友
当前离线
11
#
大
中
小
发表于 2008-7-31 15:57
只看该作者
实际上我的问题在于我所安装的ruby版本错误
我所安装的是one-click-installer版本,这个版本对IO和Thread的支持并不好,可能是在编译的时候使用了一些阻塞的函数。
安装非one-click-installer版本即可解决这个问题。
one-click-installer版本问题多多,大家慎用。
UID
6892
帖子
11
精华
0
R币
14
阅读权限
2
在线时间
4 小时
注册时间
2008-6-2
最后登录
2008-8-1
查看详细资料
TOP
黑马
黑马
Ruby游荡者
个人空间
发短消息
加为好友
当前离线
12
#
大
中
小
发表于 2008-7-31 20:40
只看该作者
还是让ruby回归到*nux吧。
UID
53
帖子
129
精华
0
R币
337
阅读权限
150
在线时间
218 小时
注册时间
2007-6-21
最后登录
2008-11-29
查看个人网站
查看详细资料
TOP
‹‹ 上一主题
|
下一主题 ››
新手入门区
我是新手
书籍学习讨论
Ruby小Case
请您接招
ROR系列讲座
Ruby基础语法
Ruby / Rails Quiz
三日一题
答案点评
题目征集
Ruby / Rails
Ruby 语言
高级编程
Rails 框架和开发
Ruby第三方实现
Rails部署
社区新闻
资源展示区
资源下载区
Ruby/Rails 中文化
国外技术文章翻译精品
NetBeans6 Ruby
ROR Wiki的中文
其他框架
Merb
开源项目区
RGB留言本
1stLog博客
开源项目管理
IT休闲区
海阔天空
企业应用
论坛管理区
用户反馈/论坛管理
联盟合作
电子期刊编辑和管理
[
申请社区博客,抢注rubylog.cn的域名!
]
[共同完善Ruby中文Wiki]
[寻找您身边的Rubyist.]
[提交好帖,加入电子期刊]
R币下完了?来看[赚取R币的三种方式吧]
R币下完了?来看[赚取R币的三种方式吧]
R币下完了?来看[赚取R币的三种方式吧]
R币下完了?来看[赚取R币的三种方式吧]
R币下完了?来看[赚取R币的三种方式吧]
R币下完了?来看[赚取R币的三种方式吧]
R币下完了?来看[赚取R币的三种方式吧]
2008-12-02 10:29 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html) @38.103.63.61