#c #multithreading #asynchronous #task
Вопрос:
Я немного новичок в C , и я хочу запустить пустую асинхронную или в задаче. В C# это выглядело бы так:
var taskA = new Task(() =gt; { Popupmessage("Hi"); }); taskA.Start();
Как я мог бы преобразовать это в C ?
Я нашел что-то подобное и попытался:
std::async(std::launch::async, Popupmessage("Hi"));
но это не работает, так как я думаю, что использовал здесь неправильный код.
Комментарии:
1. Продуманное «не работает»
2.
std::async(std::launch::async, []() { Popupmessage("Hi") });
или используйте[amp;]
, если Popupmessage является функцией-членом.3. — Сообщение об ошибке: «std::async»: не найдена соответствующая перегруженная функция. — Шаблон функции, специализирующейся на ошибках «std::futurelt;_Select_invoke_traitslt;decaylt;_Tygt;::type,decaylt;_Tygt;lt;_ArgTypesgt;::type…lt;_ArgTypesgt;gt;::typelt;_ArgTypesgt;gt;gt; std::асинхронный(std::запуск,_Fty amp;amp;,_ArgTypes amp;amp;…)».
4. @супер, это сработало, большое спасибо 🙂
5. Обязательно поймайте возвращенное будущее, иначе оно будет эффективно работать синхронно. Деструктор вызывает ожидание.