C запускает пустую асинхронную или в задаче?

#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. Обязательно поймайте возвращенное будущее, иначе оно будет эффективно работать синхронно. Деструктор вызывает ожидание.