2015-08-06 2 views
2

Безопасно ли вызывать функции SDL_net в другом потоке (кроме основного потока)? И есть ли какие-то правила? Я не мог найти никакой информации об этом, когда я его искал.SDL_net 2.0 многопоточность

ответ

1

Да, это безопасно. Фактически, некоторые операции должны быть сделаны в отдельной теме.

Я просмотрел TCP-часть SDL_net. В частности, любой вызов

  • SDLNet_ResolveHost, если он должен разрешить запрос DNS через удаленный хост
  • SDLNet_TCP_Open, который подключается к удаленному хосту и не просто установить сокет
  • SDLNet_TCP_Recv если и только если там не все ожидающие байты в потоке TCP
  • SDLNet_TCP_Send

должен быть сделан в отдельном потоке, если вы хотите, чтобы избежать блокирования рендеринга нити, пропущенных т изображения и окна, которые больше не отвечают.

Однако следует избегать того, чтобы две или более нитки одновременно вмешивались в один и тот же разъем. Убедитесь, что потоки обмениваются данными друг с другом, чтобы избежать ошибок, вызванных параллелизмом. Используйте мьютексы, замки и т. Д., Чтобы убедиться в этом.

Смежные вопросы