分派异步事件?

解决:原来我几乎做对了所有事情,而且wxLua库运行良好。问题在于将在Debug中编译的库与在Release中编译的库混合在一起。

邮件列表归档


我正在使用wxLua制作一个界面,但我面临着几个崩溃问题。在寻找其源头之后,我找到了它。我正在加载标准lua解释器,而不是将我的C++代码与wxLua链接在一起,我创建一个标准lua解释器,然后在其中执行require("wx"),这会加载wx.dll。我有一个可能的原因的想法,所以我会问一下,以防这是已知的行为。首先有几个问题?

  1. 首先在wxWidgets中,事件(单击、单元格更改、树项激活等)是同步还是异步调度的?

  2. 如果是异步的,是否可能同时针对同一个lua状态调度两个事件?。

我有一个带有几个项目和网格的树控件,所以当激活树中的项时,网格会被填充。我当前连接到树项激活、树项右键单击、网格单元格更改事件。

假设主循环上运行的wxWidget线程是A(我相信它是加载lua脚本的线程,不是吗?),当我激活树节点时,将在事件队列中排队一个事件(evt1),主循环将检查待处理事件时它将找到事件(evt1)并将其调度(但是处理程序的lua函数将由运行主循环的线程(A)调用还是将创建第二个线程(B)?)。

如果问题5是新线程将被创建以执行处理程序,则树中的另一个事件(evt2)是否可以排队在事件队列中,然后主循环线程(A)调度它,创建一个新线程(C)访问并修改lua状态,而在此期间,先前的事件线程(B)尚未返回?

到目前为止,我的整个测试都表现为重绘网格,同时在树中点击了几个计时器,因此事件处理程序不会立即返回。

我认为之前的所有问题都可以概括为:wxLua是否保护从wxLua中访问lua状态?

提前致谢。

最好的问候。

Javi。

注:我将在邮件列表中发布同样的问题,只是让您知道。我将从一个复制解决方案到另一个。

点赞
用户16582
用户16582

我不知道 lua 到底是什么,但是 wxWidgets GUI 事件都在主线程中处理。不会创建新的线程。

2013-04-12 20:24:29