嗯,我已经阅读过各种地方,pygame事件处理必须在主线程中完成。我想这样做,但我的问题是,我可以从另一个线程添加事件到事件队列吗?我可以从第二个线程添加pygame事件吗
我想从另一个线程调用pygame.event.post(myEvent)
并在主循环中处理事件。这可能吗?
编辑:为了澄清,我想为异步网络I/O运行一个单独的线程。当一条新消息到达时,线程会在事件队列中放置一个事件来指示有事情要做。
嗯,我已经阅读过各种地方,pygame事件处理必须在主线程中完成。我想这样做,但我的问题是,我可以从另一个线程添加事件到事件队列吗?我可以从第二个线程添加pygame事件吗
我想从另一个线程调用pygame.event.post(myEvent)
并在主循环中处理事件。这可能吗?
编辑:为了澄清,我想为异步网络I/O运行一个单独的线程。当一条新消息到达时,线程会在事件队列中放置一个事件来指示有事情要做。
一些侦探工作的时间!
查看event.c中的event_post
的来源表明C函数使用SDL调用SDL_PushEvent
,但没有单独检查线程安全性。但是,文档SDL_PushEvent
说:
此函数是线程安全的,并且可以从其他线程安全地调用。
所以它似乎确实是线程安全的。
完美!非常感谢你。 – BubuIIC 2013-03-21 20:54:29
我不确定,但你为什么不试试看看会发生什么? – Claudiu 2013-03-21 20:23:22
我会的,当我遇到它。线程问题的问题在于它在某些时候可能会出错。 – BubuIIC 2013-03-21 20:30:37