и не ждать ее выполнения, а получить данные тогда, когда основная программа будет к этому морально готова?
Для начала стоит сформулировать, что подразумевается под "когда основная программа будет морально готова". А если данные не будут готовы к этому моменту?
Если данные не готовы - продолжить основную работу и повторить через N времени снова
Примитивный вариант - иметь какое-то синхронизированное расшаренное хранилище, в котором будут данные и флажок готовности данных. Остальное - вопрос красивых оберток
Что это?
std::conditional_variable
У меня си
Разница непринципиальна. Переползай на С++
ну да, всего-то половины std нет
значит смотри как под твою платформу создавать потоки
Потоки создав - программа будет обязана сделать join и получить таки ответ. А мне нужно асинхронность
join можно делать в самом конце main
То есть можно вообще не делать?
нет, что-то из join/detach всё равно надо будет вызвать
Вне функции, где вызывался поток вызвать джоин нельзя?
это обычная функция, можно вызвать где удобно
На Си потоков вообще нет, только через API OS. pthread_create например, что-то такое. Все потоки неблокирующие. Ну а когда программа будет готова - это её уже дело, она и будет данные запрашивать от потока.
C11 добавили threads.h
А ну да... Ну да .. только никто его не поддерживает...
Обсуждают сегодня