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

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

2015-3-27 10:34
15554

先贴一下运行效果:

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

    早就看到Lua可以支持多线程的帖子,但也没见人发布一个多线程的Lua解释器。于是自己根据前人的经验编译了一个。本来想发在Lua中国开发者这个论坛上,不过看上面没大有讨论Lua技术的,基本都是游戏之类的,而且我的密码也忘了,多次找回密码都没反应。所以来到了看雪,我的家。让小伙伴们多了解一下Lua这个小巧而又强大的脚本语言。
    修改方法参考的这个帖子:b07K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3y4F1j5X3I4G2k6%4y4Q4x3X3g2U0L8$3#2Q4x3V1k6*7K9r3q4F1k6$3c8G2L8X3N6K6K9r3g2F1k6#2)9J5c8Y4m8Q4x3V1j5K6y4U0M7&6x3o6t1@1i4K6u0W2K9s2c8E0L8l9`.`.

    源代码来自于Lua官方网站:673K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3I4#2j5g2)9J5k6h3!0J5k6#2)9J5c8R3`.`.

    我修改后的代码放在了Github上:3b2K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6D9N6i4A6Z5L8r3!0F1i4K6u0r3e0s2g2S2y4e0y4y4g2l9`.`.
   
    感兴趣的一起来和我交流,给我提建议也好。

多线程的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


[培训]科锐逆向工程师培训第53期2025年7月8日开班!

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

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

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


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