2015-12-21 2 views
-7

Я хочу выполнить некоторые операции загрузки и сохранения в другом потоке (в SDL). Чтобы это сделать, я подумал о создании потока и его отсоединении (позволяя его закончить самостоятельно) каждый раз, когда я вызываю функцию, которая должна запускаться отдельно.
Но я не думаю, что это правильное поведение (или это?).
Есть ли лучшее решение, например, создание и использование только одного потока? И если есть, как я могу назвать свою функцию (ы) из нее?Как вызвать функцию внутри потока?

+0

Эти тихие downvoters ... – Xriuk

+0

Является ли SDL2 непосредственно относящимся к этому вопросу? Что вы подразумеваете под «правильным»? Вы обеспокоены утечкой ресурсов? Будет ли асинхронная работа C++ 11 для вас? – doctorlove

+0

Я работаю с SDL2 и планирую использовать семафоры SDL, мьютексы, ... Поэтому я хотел бы работать только с ним. Под «правильным» я имею в виду, если это так, как это должно быть сделано. – Xriuk

ответ

0

Использование std::async. В большинстве реализаций используются эффективные решения, такие как повторное использование потоков из threadpool.

0

Жизненный цикл нити зависит от основного потока (или родительского потока), без объединения всех дочерних потоков будет прекращен, когда основной поток (или родительский поток) будет завершен. Поток привязан к процессу. Возможно, вам захочется взглянуть на форматирование процесса, это сохранится, даже если родительский процесс завершит работу, но может быть запущен процесс зомби, и он не сможет завершить его в рамках программы.

+0

Извините, но это не отвечает на мой вопрос ... – Xriuk

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