struct A {
void f(int& p) {
}
};
int main() {
A a;
int p = 3;
thread t(&A::f, a, p);
}
Но если убрать ссылочный тип,
struct A {
void f(int p) {
}
};
тогда работает
Всегда старайтесь оборачивать таски в std::packaged_task это даст вам фьючу !(https://en.cppreference.com/w/cpp/thread/packaged_task) перед запуском в поток!
Если у Вас референс аргумент - то так и пишите!
Перед стартом потока проверяйте его!
Перед тем как дернуть join проверяйте, а можно ли! А то будет бобо...
И всегда проверяйте как поток отработал!
#include <iostream>
#include <thread>
#include <future>
struct obj
{
static void f(int& a) {
++a;
}
};
int main() {
std::thread th1;
int i{100};
std::packaged_task<void(int&)> xTask{obj::f};
auto task{xTask.get_future()};
std::thread th;
if (!th1.joinable()) {
th = std::thread{std::move(xTask), std::ref(i)};
} else {
th.join();
th = std::thread{std::move(xTask), std::ref(i)};
}
if (th.joinable()) {
th.join();
}
try {
task.wait();
task.get();
} catch (std::exception& exc) {
std::cout << exc.what() << std::endl;
} catch (...) {
std::cout << "unknown error ~ !"<< std::endl;
}
std::cout << "i after task : " << i << std::endl;
return 0;
}
struct A {
void f(int& p) {
}
};
int main() {
A a;
int p = 3;
thread t(&A::f, a, std::ref(p));
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
найти значения длины гипотенузы в прямоугольном треугольнике с целыми сторонами, если 1 из катетов (H) Н-простое числоH=(2<=H<=10^4)
Решил попробовать создать двоичный тип данных для вводимых чисел, а также функции конъюнктирования и дизъюнктирования к нимОднако в какой-то...
Есть сервер TCP QTcpServer tcp и сокет подключения QTcpSocket socketПодключаю я их вот так: