linux多线程卡死问题
在一个linux进程中,开两个线程分别通过lua提供的库函数调用lua虚拟机执行lua脚本,编写两份测试脚本,脚本内容为如下:print("status 1".. os.time())
local cmd="cat /tmp/123.log"
print("cmd:"..cmd)
local swc = io.popen(cmd);
--print("status 2")
local var
if swc then
var=swc:read("*all")
if var then
--print("status 3")
-- local port, up = var:match("port:(%d+) link:(%w+)")
-- os.execute("sleep " .. 1)
end
swc:close()
end
--print("status 4")
return ;
两份脚本执行的都是cat不同文件,在进程中开两个线程来分别不断的执行这两个脚本,进程很快就会卡死,通过printf打印查看到一个线程在执行lua库中的popen调用,另一个线程在执行close,不明白为什么会有这个问题,在另一台不同cpu不同linux版本相同lua版本的嵌入式设备上并不会出现该问题,对比发现两份linux的popen pclose代码不太一样,但不清楚原因。
进程卡死的时候ps查看进程状态为S,两个线程状态分别为S和Running,CPU占用很高,还请高人指点可能是什么原因。 两个脚本是用的两个lua_State吗? 笑笑我笑了 发表于 2020-10-25 17:58
两个脚本是用的两个lua_State吗?
是的,用的不同的state,而且脚本操作的文件也是不同的文件 结帖:工具链中的bug,该修订在2018年11月3日,目前用的是2018年2月的版本,准备更新2019年版本的工具链。
页:
[1]