LUA解析器 如何执行两个LUA脚本??怎么终止其中一个脚本?

sd01101230 2008-10-30 09:15:47
应用程序需要初始化一些共同的脚本环境变量。
不想创建两个垃圾进程来执行lua脚本(创建进程可以用Te r m i n a t e P r o c e s s API来终止进程,相当于终止某个lua脚本)。

目前做法是,父进程A,分别创建子进程B,C(lua简单解析器,并执行脚本),然后想终止脚本C的话,用Te r m i n a t e P r o c e s s来执行的。

请问有啥好的办法,让一个lua解析器执行两个甚至2个以上的lua脚本呢?并且可以终止其中一个想要终止的lua脚本????
...全文
1830 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sd01101230 2008-11-01
  • 打赏
  • 举报
回复
恩,先用多线程测试一下先。。。
sd01101230 2008-10-31
  • 打赏
  • 举报
回复
想把整个程序用lua写。
lua有GUI库的,就像python一样。

确实,要是扔在C++写的话,控制可能更精确,更好。

只是为了爱好,只是为了兴趣。

呵呵。睡了。

感谢yebeans 的回答。
gamedragon 2008-10-31
  • 打赏
  • 举报
回复
还是分多个Lua解析器去完成你的工作吧。
我目前做的项目也是用了两个Lua解析器,跑在两个线程里,一个负责底层的逻辑,一个负责界面的逻辑。
yebeans 2008-10-30
  • 打赏
  • 举报
回复
你这样用的话线程跟进程效果一样的。
当然应该有更好的解决方案,对lua还不是特别了解。

我只是很好奇为什么要这么弄?lua还能写出gui程序?是用脚本写个程序然后再起个lua虚拟机去运行这个程序?
为什么不直接用c++写呢?或者在Lua里面控制结束?

不太理解你是想实现个什么功能?
sd01101230 2008-10-30
  • 打赏
  • 举报
回复

恩可能会运行很久。。。24小时以上也有可能。。。(一个GUI程序,总不能运行几分钟或几小时就结束的)


恩,对线程忘了很多了,很久没用了。。。(最近一直在做web方面的)
yebeans 2008-10-30
  • 打赏
  • 举报
回复
要是创建多个线程的话。
线程的时间片可能没法保证(进程似乎不存在这个问题)。
=========================================
你似乎对进程和线程的概念还不是很了解。看看相关资料吧。

Lua脚本会运行很久么?
如果只是多的话,完全可以等当前脚本执行完之后再结束。延迟很有限的。
如果脚本运行时间会很久的话,个人觉得就是你们的设计(或者说对运用脚本的定位)问题了。
sd01101230 2008-10-30
  • 打赏
  • 举报
回复
这个是lua解析器进程:

int WINAPI wWinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) {

lua_State *L = lua_open(); /* create state */
luaL_openlibs(L); /* open libraries */

if (luaL_loadfile(L, "E:\\e.lua") || lua_pcall(L, 0, 0,0)){
//error(L, "cannot run configuration file: %s",lua_tostring(L, -1));
//set_error_msg(lua_tostring(L, -1));
}else{
//set_error_msg("it is OK!");
}
const char *p=lua_tostring(L, -1);
lua_close(L);

return(0);
}


这个进程在别的父进程里启动,当然可能会启动很多次(执行很多脚本)。其实是为了方便强行终止,才做了这个进程。

sd01101230 2008-10-30
  • 打赏
  • 举报
回复
要是创建多个线程的话。
线程的时间片可能没法保证(进程似乎不存在这个问题)。
sd01101230 2008-10-30
  • 打赏
  • 举报
回复
这个不行,我想执行的是两个无相关的脚本。。
只是想在OpenLua之后执行一些共同的库文件。。。
换句话说,解析器只有一个,要执行不相关的很多个脚本。但又得符合需求,随意终止某个脚本的执行(可能此脚本在while循环中,强制终止)。

目前做法是创建多个解析器,也就是说,每个脚本都有独立的解析器执行。
gamedragon 2008-10-30
  • 打赏
  • 举报
回复
你试试Lua里的coroutine能不能满足你要求吧。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧