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

Project1

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

[讨论] Ruby中的Thread类为什么多网络访问无效?

[复制链接]

Lv2.观梦者

梦石
0
星屑
722
在线时间
375 小时
注册时间
2009-3-9
帖子
398
跳转到指定楼层
1
发表于 2014-6-18 13:24:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
大家都知道Thread类是ruby的线程类,他可以很方便的让我们在游戏进行的过程中搞一些
其他的事情,比如之前经典的10s刷新脚本等等,但是最近小弟在研究网络接口的时候,发
现线程没有任何作用,很奇怪,希望有大神一起讨论下看看如果实现线程?

伪代码如下:
RUBY 代码复制
  1. Thread.new do
  2.         # 定义网路连接API
  3.         InternetOpenA = Win32API.new("wininet.dll","InternetOpenA","pippi","l")
  4.         InternetConnectA = Win32API.new("wininet.dll","InternetConnectA","ipippiii","l")
  5.         # 建立网络连接
  6.         hOpen = InternetOpenA.call("FTP CLIENT", 1, '', '', 0)
  7.         hConnection = InternetConnectA.call(hOpen,"xxxx",'xx','xxx','xxx',1,134217728,0)
  8. end


上面是一段利用Thread类访问网络的代码,理论上我把它放到脚本里面去执行,然后应该和主进程并行才对,但是事实上却是这个
线程执行的时候会将主线程卡主!!!求高手告知原因。。。
新手学习中.....努力吧!!

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
42426
在线时间
7603 小时
注册时间
2009-7-6
帖子
13506

开拓者贵宾

2
发表于 2014-6-18 13:51:17 | 只看该作者
同步连接本来就是阻塞线程的,而ruby的子线程阻塞好像也会导致主线程阻塞。
ruby中有纤程或许能解决这个问题,但rgss里却不支持、

而异步传输需要回调函数,不自制启动器也是很难办到的吧。
(其实@晴兰 有s20系列的黑科技,可以简单做到。)

点评

自制启动器啊,这个我倒是会,我就是不清楚为什么会这样而已,既然RGSS确实没办法,那也没招了,要么自制启动器、要么写个DLL利用CreateThread访问  发表于 2014-6-18 15:56
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
722
在线时间
375 小时
注册时间
2009-3-9
帖子
398
3
 楼主| 发表于 2014-6-18 15:57:51 | 只看该作者
fux2 发表于 2014-6-18 13:51
同步连接本来就是阻塞线程的,而ruby的子线程阻塞好像也会导致主线程阻塞。
ruby中有纤程或许能解决这个问 ...

话说什么是s20黑科技{:2_257:}?

点评

嗯?这样@晴兰 他可以收到吗?  发表于 2014-6-19 14:18
@晴兰  发表于 2014-6-19 11:45
新手学习中.....努力吧!!
回复 支持 反对

使用道具 举报

Lv6.析梦学徒

Fuzzy Ginkgo
Taciturn Knight

梦石
0
星屑
60819
在线时间
1934 小时
注册时间
2010-6-26
帖子
1605

烫烫烫开拓者

4
发表于 2014-6-20 01:06:40 | 只看该作者
兰兰的东西都太黑了你们是看不懂滴……
https://github.com/Artoria/RMSFX/blob/master/s20.rb

点评

兰兰的东西都太黑了你们是看不懂滴……  发表于 2014-6-20 12:46
我的言论只代表我个人的观点,不代表雇主及/或任何第三方的立场。
Opinions expressed are solely my own and do not express the views or opinions of my employer and/or any third parties.
捐赠 | GitHub
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 00:49

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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