luajit ffi库 使用WIN32 CreateThread 创建线程 和传递参数

闲来无事。这些天研究luajit ffi库,发现这个库很强大 ,直接可以用lua写c代码了,肯定还是有一些局限性的。

function Beep()--主板报警
	local ffi = require("ffi")
	ffi.cdef[[
	bool __stdcall Beep(long dwFreq, long dwDuration);
	]]
	ffi.C.Beep(500,200)ffi.C.Beep(1200,500)ffi.C.Beep(3200,500)
	ffi.C.Beep(500,100)ffi.C.Beep(1200,300)ffi.C.Beep(3200,500)
end

function TestCreateThread()
	local ffi = require("ffi");
	local C = ffi.C;
	ffi.cdef[[
		typedef long (__stdcall *PTHREAD_START_ROUTINE)( long lpThreadParameter);
		typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
		long __stdcall CreateThread(long lpThreadAttributes,int dwStackSize,PTHREAD_START_ROUTINE lpStartAddress,long lpParameter,long dwCreationFlags,long lpThreadId);
		int __stdcall Sleep(int num);
		]]
	--local lpParameter = ffi.typeof("void*");
	---local lpParameter = ffi.new(lpParameter,1);

	local dwCreationFlags ,lpThreadId =0,0;
	--[[C 语言原型的线程
	::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)(&Login_Thread), NULL, 0, NULL);
	]]
	C.CreateThread(
	0,
	0,
	function(param) 
		Beep(true);
		print("11111111");
	end,--回调函数 线程要调用的执行的
	0,
	0,
	0
	)
	print('TestCreateThread',type(C.CreateThread))
end

这个用luajit 的 解释器执行起来 是没问题 主板也能发声,说明线程能正常创建 并且打印出来了  
print('TestCreateThread',type(C.CreateThread))

问题来了,我把在主程序里面执行脚本的时候 运行这些代码 但是不会创建线程 反正没主板发声,打印好像有,具体忘了,打印应该 是出来了,就是没 主板发声。很奇怪。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值