0 / 0 / 0
Регистрация: 28.12.2019
Сообщений: 5
1

Передача параметров метода в поток

09.04.2021, 17:43. Показов 3532. Ответов 3

Author24 — интернет-сервис помощи студентам
Вот такая вот проблема, выдает ошибку при передаче параметров в поток. Совершенно не получается в интернете найти что нибудь, что поможет. Мне нужно запустить в отдельном потоке метод и передать в него параметром promise.
Ошибка: C2893 Сбой при специализации функции-шаблона "unknown-type std::invoke(_Callable &&,_Ty1 &&,_Types2 &&...)
C2780 unknown-type std::invoke(_Callable &&) noexcept(<expr>): требует аргументов: 1, имеется: 3
C2672 "invoke": не найдена соответствующая перегруженная функция

Подскажите как правильно параметр передать в метод
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void Calc::start(promise<void>ePromise) {
    while (true) {
        while (!recoding_start.load());
        try {
            split(str);
        }
        catch (exception& ex)
        {
        }
    }
 
    
}
Calc::Calc() {
    recoding_start.store(false);
    promise<void> ePromise;
    auto future = ePromise.get_future();
    td = thread(&Calc::start,ePromise,this);//Вот здесь беда
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2021, 17:43
Ответы с готовыми решениями:

Передача параметров в поток
Почему в потоке (точнее в функции, которую он отрабатывает) после преобразования указателя &quot;r2&quot; к...

Передача параметров в поток
Существует функция: pubic: void Func() { // что-то делает } Она вызывается из основной...

Передача параметров в поток
Добрый день. Имеется основная форма, где объявлена переменная AnsiString LineMessage. Там же в нее...

Передача параметров в поток
Помогите пожалуйста, не могу понять, как правильно передать параметр в поток. printf(&quot;Listening...

3
440 / 283 / 183
Регистрация: 23.06.2018
Сообщений: 651
09.04.2021, 17:52 2
Не знаю исправит ли это вашу ошибку, но вообще-то this передают вторым аргументом, сразу после нестатического метода класса.
0
0 / 0 / 0
Регистрация: 28.12.2019
Сообщений: 5
09.04.2021, 17:57  [ТС] 3
Нет, выставление this вторым аргументом не помогло, я это уже пробовал
0
6091 / 3449 / 1402
Регистрация: 07.02.2019
Сообщений: 8,768
09.04.2021, 18:06 4
Лучший ответ Сообщение было отмечено HFq3141 как решение

Решение

Цитата Сообщение от HFq3141 Посмотреть сообщение
Нет, выставление this вторым аргументом не помогло, я это уже пробовал
1) Вопрос не в "пробовал". Так правильно.
2) std::promise не копируется, его нужно перемещать.
C++
1
thread(&Calc::start, this, std::move(ePromise))
0
09.04.2021, 18:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2021, 18:06
Помогаю со студенческими работами здесь

Передача параметров в поток и обратно
Есть поток (модуль потока Unit2.cpp) ...

Передача параметров в поток. Сигнально-слотовое соединение
Здравствуйте. Подскажите, пожалуйста, в каком направлении двигаться. Имеется главная форма окна, ...

Передача метода в поток после инициализации потока
Разработать класс ThreadPool. Объект этого класса содержит несколько потоков, находящихся в...

Передача параметров в поток
Создаю и запускаю потоки так: // CountThreads - кол-во потоков, введенных через поле ввода...

Передача параметров в поток
Всем привет! Знаю что тема где-то была, не нашел. Нужно запустить в потоке метод с параметрами без...

Передача в поток параметров
Ку. Надо создать поток, а потом, стартовать с заданными параметрами.. Пробую так: Thread thread =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru