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