我已经在各个地方读过pygame事件处理必须在主线程中完成。我想这样做,但我的问题是,我可以从不同的线程向事件队列添加事件吗?
我想从另一个线程调用pygame.event.post(myEvent)
,而不是在主循环中处理事件。这可能吗?
编辑:为了澄清,我想为异步网络i / o运行一个单独的线程。当一条新消息到达时,线程会在事件队列中放入一个事件来表示有事情要做。
答案 0 :(得分:4)
一些侦探工作的时间!
查看event.c中event_post
的来源表示C函数使用SDL调用SDL_PushEvent
,而不自行检查线程安全性。但是,SDL_PushEvent
的文档说:
此函数是线程安全的,可以安全地从其他线程调用。
所以它似乎确实是线程安全的。