首页
社区
课程
招聘
[原创]Lua5.3多线程版本 (Windows 32)
2015-3-27 10:34 14526

[原创]Lua5.3多线程版本 (Windows 32)

2015-3-27 10:34
14526
先贴一下运行效果:

(看文章下面已经有新的版本了!!!)

    早就看到Lua可以支持多线程的帖子,但也没见人发布一个多线程的Lua解释器。于是自己根据前人的经验编译了一个。本来想发在Lua中国开发者这个论坛上,不过看上面没大有讨论Lua技术的,基本都是游戏之类的,而且我的密码也忘了,多次找回密码都没反应。所以来到了看雪,我的家。让小伙伴们多了解一下Lua这个小巧而又强大的脚本语言。
    修改方法参考的这个帖子:http://www.cnblogs.com/zhangdongsheng/p/3679024.html

    源代码来自于Lua官方网站:http://www.lua.org/

    我修改后的代码放在了Github上:https://github.com/luzhlon/Lua53MT
   
    感兴趣的一起来和我交流,给我提建议也好。

多线程的Lua解释器: (下面有新的!!!!)

-------------------------------------------------------------------------------------------------------
--------------------------------------------------更新------------------------------------------------
-------------------------------------------------------------------------------------------------------
2015-3-28
新版本的运行截图:


这次主要将newthread和startthread这两个全局函数去掉,改为加入了systhread这个库。

测试代码:
local function ff1(n)
    for i = 1, n do
        print('Thread 1 --> \t'..i)
    end
end
local function ff2(n)
    for i = 1, n do
        print('Thread 2 --> \t'..i)
    end
end
local function ff3(n)
    for i = 1, n do
        print('Thread 3 --> \t'+i)--Error code
    end
end
local function ff4(n)
    for i = 1, n do
        print('Thread 4 --> \t'..i)
        --systhread.sleep(5)
    end
end

local st1 = systhread.create(ff1, 4)
local st2 = systhread.create(ff2, 6)
local st3 = systhread.create(ff3, 8)

st1:resume()
st2:resume()
st3:resume()

st1:wait() print('Thread 1 exitcode : '..st1:exitcode())
st2:wait() print('Thread 2 exitcode : '..st2:exitcode())
st3:wait() print('Thread 3 exitcode : '..st3:exitcode())

print ''
print 'Create st4 ...'
local st4 = systhread.create(ff4, 10)
print 'Resume st4 ...'
st4:resume()
systhread.sleep(5)
print 'Suspend st4 ...'
st4:suspend()
print 'Resume st4 ...'
st4:resume()

新的多线程Lua解释器: lua.zip

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
点赞1
打赏
分享
最新回复 (6)
雪    币: 43
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
虫子樱桃 2015-3-27 11:06
2
0
前排支持~~ 只需要这个程序就Ok了么?
雪    币: 225
活跃值: (114)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
luzhlon 2015-3-27 11:25
3
0
是的,这是一个独立的解释器。其中我加了两个全局的函数newthread和startthread

newthread用于创建一个系统线程,参数是一个函数还有提供给函数的参数,返回一个lua线程。
startthread用于运行线程,参数是newthread创建的线程。

暂时还有一个问题是主线程执行完了,程序就退出了,所以主线程创建的线程可能会执行不完,这个问题我将在以后的版本中修复。现在可以用lua -i参数来启动一个脚本文件,这样主线程就不会退出了。
雪    币: 1905
活跃值: (1427)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
z许 2015-3-27 11:36
4
0


good~~~
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
abbear 2015-3-27 12:42
5
0
向大神学习
雪    币: 155
活跃值: (37)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yxwdjsw 2015-3-27 18:04
6
0
同时可以打怪 可以吃血么
雪    币: 74
活跃值: (543)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wodexinren 2015-3-27 20:37
7
0
支持~感谢分享
游客
登录 | 注册 方可回帖
返回