powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / При иерархическом создании асинхронных задач получаю неверную работу программы
3 сообщений из 3, страница 1 из 1
При иерархическом создании асинхронных задач получаю неверную работу программы
    #39664605
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я создал первую задачу, которая выполняется асинхронно и создает вторые асинхронные задачи (и то, и другое сделал с помощью лямба- функций). Но почему- то когда запускается выполнение второй задачи, то стартует функция из первой задачи!

Вот как я создаю первую задачу (в настройках у меня хранятся два заранее созданных объекта "SeparateArrayByClient" и "WriteFiles" для хранения асинхронных задач для последовательного их выполнения):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
int main(int argc, char *argv[])
{
         std::function<void(const variativeData&)> Separator = [ArrayOfMonth = std::move(ArrayOfMonth), CurrentMonth](const variativeData& Settings)
        {
             SeparateArrayByClient(ArrayOfMonth, CurrentMonth, Settings);
        };

        cstring Information = "Separate file by ticker:" + FullPathReadFile;
        asyncTask* CurrentTask = new asyncTask(Settings, std::move(Separator), Information, CurrentMonth);
        asyncPool* SeparateArrayByClient = Settings.at<asyncPool*>("SeparateArrayByClient");
        SeparateArrayByClient->AddTask(CurrentTask, "SeparateArrayByClient");
}



А вот как создаются вторые задачи:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
void SeparateArrayByClient(const array<allData>& ArrayOfData,
                           cuint32 CurrentMonth,
                           const variativeData& Settings)
{
    std::function<void(const myLib::variativeData&)> Bind = [](const myLib::variativeData& Settings)
    {
        RunMarkAllFilesAsUnchanged();
    };

    cstring Information = "Mark all files as unchanged";
    myLib::asyncTask* const CurrentTask = new myLib::asyncTask(Settings, std::move(Bind), Information);
    myLib::asyncPool* AsyncPool = Settings.at<myLib::asyncPool*>("WriteFiles");
    AsyncPool->AddTask(CurrentTask, "WriteFiles");

   ...

    std::function<void(const myLib::variativeData&)> Bind = [](const myLib::variativeData& Settings)
    {
        RunCloseUnchangedFiles();
    };

    cstring Information = "Close unchanged files";
    myLib::asyncTask* const CurrentTask = new myLib::asyncTask(Settings, std::move(Bind), Information);
    myLib::asyncPool* AsyncPool = Settings.at<myLib::asyncPool*>("WriteFiles");
    AsyncPool->AddTask(CurrentTask, "WriteFiles");
}



Когда начинает выполняться задача "Mark all files as unchanged", то она запрыгивает в функцию SeparateArrayByClient (а не RunMarkAllFilesAsUnchanged!!!). Почему такое происходит?
...
Рейтинг: 0 / 0
При иерархическом создании асинхронных задач получаю неверную работу программы
    #39665046
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, ошибка найдена и была в другом куске программы.
...
Рейтинг: 0 / 0
При иерархическом создании асинхронных задач получаю неверную работу программы
    #39665721
kolobok0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL,

OFF/2:
В любой асинхронности, правильная колбаса, фазы старта и останова = СИНХРОННЫЕ!

Иначе от противного - можно с оптимизировать - вообще не запускать ветки. Вам же пофигу когда они реально начнут работать?

удачи вам
(круглый)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / При иерархическом создании асинхронных задач получаю неверную работу программы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]