6

好吧,我在各个地方都读到过,pygame 事件处理必须在主线程中完成。我想这样做,但我的问题是,我可以从不同的线程将事件添加到事件队列吗?

我想pygame.event.post(myEvent)从不同的线程调用,而不是在主循环中处理事件。这可能吗?

编辑:为了澄清,我想为异步网络 i/o 运行一个单独的线程。当有新消息到达时,线程会将一个事件放入事件队列中,以表明有事情要做。

4

1 回答 1

8

是时候进行一些侦探工作了!

查看event_postin event.c的源代码表明 C 函数使用 SDL call SDL_PushEvent,而没有自行检查线程安全性。但是,文档SDL_PushEvent说:

该函数是线程安全的,可以安全地从其他线程调用。

所以看起来它确实是线程安全的。

于 2013-03-21T20:41:25.077 回答