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

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

2015-3-27 10:34
15359

先贴一下运行效果:

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

    早就看到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直播授课

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

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

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


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