python - 我可以从第二个线程添加 pygame 事件吗

标签 python thread-safety pygame

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

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

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

最佳答案

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

查看 event.cevent_post 的源代码指示 C 函数使用 SDL 调用 SDL_PushEvent,而不自行检查线程安全。但是,SDL_PushEvent 的文档说:

This function is thread safe, and can be called from other threads safely.

这样看来确实是线程安全的。

关于python - 我可以从第二个线程添加 pygame 事件吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15538287/

相关文章:

python - 如何更改套接字的权限?

python - Tensorflow 损失在我的 RNN 中出现分歧

python - 如何创建一个安装后可以用作shell命令的python库?

python - 尝试下载 pygame 时收到错误消息

python - 断言一次运行明显快于另一次运行

C++ 线程安全和 notify_all()

rust - 如何将指向可变变量的指针共享给线程?

asp.net - nHibernate 使用 Log4Net 进行日志记录,线程 session 问题

python - 在 Pygame 中为矩形赋值时出错

python - 我写了一个 pygame 程序,但是当我尝试使用 py2exe 时,我在 dist 中没有得到 exe