В нижеприведённом коде я пытаюсь создать поток в функции и выполнить в нём другую функцию.
void main()
{
thread t1(A, String1, String2);
t1.join();
}
void A(string String1, string String2)
{
thread t[10];
int score = 0;
for (size_t i = 0; i < 10; i++)
{
t[i] = thread (B, String1, String2, &score);
}
}
void B(string String1, string String2, int &score)
{
++score;
}
В результате получаю такую ошибку
*Error C2672 'std::invoke': no matching overloaded function found
Error C2893 Failed to specialize function template 'unknown-type std::invoke(_Callable &&,_Types &&...) noexcept()'*
Подскажите, пожалуйста, что сделано не правильно?
Вы передаете параметры по ссылке в поток без использования std::ref
.
Вам стоит использовать std::ref
о котором подробно можно прочитать здесь по ссылке.
Краткое описание:
Шаблоны функций ref
и cref
являются вспомогательными функциями,
которые генерируют объект типа std::reference_wrapper
, используя вывод
типа аргумента шаблона для определения аргумента шаблона результата.
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Делаю лабораторную своего университета, где задачей является сохранение картинок в форматеppm
Нужна помощьЕсть datagridview в него считывается и записывается таблица из файла
Имеем доску, в которую на определенном расстоянии друг от друга вбиты гвоздиЛюбые два гвоздя можно соединить веревкой