SDL_net 2.0 多线程

SDL_net 2.0 multithreading

在另一个线程(主线程除外)上调用 SDL_net 函数是否安全?有什么规定吗?当我搜索它时,我找不到任何关于它的信息。

是的,很安全。事实上,有些操作应该在单独的线程中完成。

我查看了 SDL_net 的 TCP 部分。特别是,任何对

的调用
  • SDLNet_ResolveHost,如果它必须通过远程主机解析 DNS 查询
  • SDLNet_TCP_Open 连接到远程主机并且不只是建立一个监听套接字
  • SDLNet_TCP_Recv 当且仅当 TCP 流上没有任何未决字节
  • SDLNet_TCP_Send

如果您想避免阻塞渲染线程、错过计时和 windows 不再响应,则必须在单独的线程上完成。

但是,应该避免两个或多个线程同时干扰同一个套接字。确保线程彼此正确通信以避免并发引起的错误。使用互斥锁、锁等来确保这一点。