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

Project1

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

[已经过期] 求教关于线程的问题,HELP!!!!

[复制链接]

Lv1.梦旅人

梦石
0
星屑
90
在线时间
56 小时
注册时间
2012-8-26
帖子
129
跳转到指定楼层
1
发表于 2013-7-7 17:19:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 yyq8092 于 2013-7-7 17:33 编辑

由于在进入战斗和地图时需要加载大量数据(10MB数据,我想瞬载),就会把主线程卡住(2-3秒),不知道该如何利用线程来解决此问题呢?
我是这样写的,但是没有效果 ,还是卡住主线程(2-3秒)然后才加载完成,完全不像一个多线程

RUBY 代码复制
  1. def load_bitmap
  2. bitmap = [] # 图片组
  3. threads = []
  4. pages = []  # 数据包(就是一个资源数据包,就用[]代替)
  5. for page_to_fetch in pages
  6.   threads << Thread.new(page_to_fetch) do |data|
  7.      # 加载数据代码
  8.      file = File.open("temp.tem","wb")
  9.      file.write(data)
  10.      file.close
  11.      bitmap.push(Bitmap.new("temp.tem"))
  12.      File.delete("temp.tem")
  13.   end
  14. end
  15. threads.each {|thread| thread.join }
  16. return bitmap
  17. end

就是从一个数据包中读出数据然后写出最后进行加载


Lv2.观梦者

梦石
0
星屑
690
在线时间
791 小时
注册时间
2011-10-20
帖子
2394

开拓者

2
发表于 2013-7-7 17:28:12 | 只看该作者
。。。你用再多线程都一样。。。。他虽然是同时执行2个线程你一个卡了其他的还不是资源就少了

点评

api偶不懂  发表于 2013-7-7 17:45
可以用API线程么?  发表于 2013-7-7 17:43
欢迎点此进入我的egames.wink.ws,有RMQQ堂等

[url=http://rpg.blue/thread-317273-1-1.html]短篇八-赶选

http://yun.baidu.com/share/link?shareid=2158225779&uk=169642147&third=0


历险ARPG赢回你的疆域新的战斗模式?…………点击这里:[宋乱贼狂 for QQ堂]
http://rpg.blue/group-368-1.html
programing ....?
[url=http://rpg.blue/thrd-234658-1-1.html]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
56 小时
注册时间
2012-8-26
帖子
129
3
 楼主| 发表于 2013-7-7 17:32:16 | 只看该作者
end55rpg 发表于 2013-7-7 17:28
。。。你用再多线程都一样。。。。他虽然是同时执行2个线程你一个卡了其他的还不是资源就少了 ...

有什么办法解决么?
还是说我这样写的线程是错误的?(一直感觉好像不是创建了线程,而是是在主线程上运行的,,毕竟我用其他编程语言写加载数据时用了线程就不会把主线程卡住,这个完全卡住主线程,压根不符合多线程的特征)

点评

木有问题  发表于 2013-7-7 17:35
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
56 小时
注册时间
2012-8-26
帖子
129
4
 楼主| 发表于 2013-7-7 17:40:19 | 只看该作者
end55rpg 发表于 2013-7-7 17:28
。。。你用再多线程都一样。。。。他虽然是同时执行2个线程你一个卡了其他的还不是资源就少了 ...

那为什么感觉还是在主线程上运行?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
690
在线时间
791 小时
注册时间
2011-10-20
帖子
2394

开拓者

5
发表于 2013-7-8 13:39:43 | 只看该作者
由于ruby的线程不是一个native的线程,因此 ruby的线程都在同一个进程里面.
欢迎点此进入我的egames.wink.ws,有RMQQ堂等

[url=http://rpg.blue/thread-317273-1-1.html]短篇八-赶选

http://yun.baidu.com/share/link?shareid=2158225779&uk=169642147&third=0


历险ARPG赢回你的疆域新的战斗模式?…………点击这里:[宋乱贼狂 for QQ堂]
http://rpg.blue/group-368-1.html
programing ....?
[url=http://rpg.blue/thrd-234658-1-1.html]
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
280
在线时间
1374 小时
注册时间
2005-10-16
帖子
5113

贵宾

6
发表于 2013-7-8 16:55:59 | 只看该作者
载入大量的图片,不如一开始就用个临时bitmap载入一下,貌似是有用的……

点评

我把载入的bitmap都存储在一个数组里面,利用数组index让其成为动画  发表于 2013-7-12 10:18
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

炎发灼眼的讨伐者

梦石
0
星屑
50
在线时间
1707 小时
注册时间
2007-8-4
帖子
904
7
发表于 2013-7-9 09:18:00 | 只看该作者
不论ruby线程模型是怎样的,至少 你那个 join 就是 把线程添加到主线程执行的(o.o

点评

汗。。。那不写join呢?  发表于 2013-7-11 17:28
RMXP&amp;RMVX通用Web化完成- -|||
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-2 20:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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