В моем примере приложения у меня в основном два потока.
Основной поток содержит движок Lua (который не является потокобезопасным) и регистрирует некоторые функции C ++ в этом движке. Однако выполнение одной из этих функций занимает слишком много времени (поскольку оно загружает некоторые файлы через Интернет), и я хочу, чтобы движок Lua продолжал выполнять другие действия без блокировки в процессе загрузки.
Поэтому я хочу сделать это асинхронным: когда из Lua вызывается функция downloadFile()
, я создаю новый поток, который выполняет загрузку. Затем функция возвращается, и движок Lua может обрабатывать другую работу. Когда загрузка закончится, второй поток каким-то образом должен сообщить основному потоку, что он должен каким-то образом вызвать дополнительную функцию processFile()
, чтобы завершить ее.
Вот где я сейчас борюсь: какое самое простое / чистое решение для достижения этой цели?