我可以从第二个线程添加pygame事件吗
我在很多地方看到说,pygame的事件处理必须在主线程中进行。我想这样做,但我有个问题,就是我能不能从其他线程往事件队列里添加事件?
我想在一个不同的线程中调用 pygame.event.post(myEvent)
,然后在主循环中处理这个事件。这可能吗?
补充说明一下,我想开一个单独的线程来处理异步的网络输入输出。当有新消息到达时,这个线程就会往事件队列里放一个事件,来提醒主线程有事情要做。
1 个回答
8
是时候来点侦探工作了!
查看一下 event_post
的源代码,发现它在 event.c 文件里,里面的 C 函数使用了一个叫 SDL_PushEvent
的调用,但它自己并没有检查线程安全性。不过,关于 SDL_PushEvent
的文档上说:
这个函数是线程安全的,可以安全地从其他线程调用。
所以看起来它确实是线程安全的。