![]() |
ktcoro_waitПриостановка выполенения функции на время основанное на корутинах C++20
Примеры кода C++: [CODE] #include #include #include "ktcoro_wait.hpp" ktwait bar ( ) { using namespace std :: chrono_literals ; while ( true ) { std :: cout Download & Source: GitHub - kin4stat/ktcoro_wait Contribute to kin4stat/ktcoro_wait development by creating an account on GitHub. github.com |
|
Цитата:
|
ахуенно бро
|
remove_if же не удаляет элементы по настоящему, только меняет итераторы
std::remove, std::remove_if - cppreference.com en.cppreference.com UPD: Я еблан, там и не надо ничего удалять. @kin4stat как оно будет работать на нескольких потоках? UPD2: Проверил сам потоки. Все корутины катчатся в инстанс потока main. И bar, который вызывает co_wait из потока t1, продолжает свое выполнение уже в потоке main C++: [CODE] #include #include #include #include "include/ktcoro_wait.hpp" ktwait bar ( ) { using namespace std :: chrono_literals ; while ( true ) { std :: cout |
Цитата:
Также теперь при эвейте другой таски текущая будет ждать окончания выполнения таски которую co_await'нули. Также теперь можно удалять таски для чужих потоков, и в приципе во всем тасклисте по всем потокам. Небезопасно если вы удаляете таску которая эвейтнула другую таску. Мне слишком лень это фиксить. |
Цитата:
|
UPDATE:
Добавлено создание пользовательских инстансов тасклистов. Также теперь можно безопасно удалять таски из очереди |
ktcoro_wait/include/ktcoro_wait.hpp at 62e51941db4635d70db367e881c93053fc58623a · kin4stat/ktcoro_wait
Contribute to kin4stat/ktcoro_wait development by creating an account on GitHub. github.com Зачем тут ссылка на ktwait? upd: приведи пример удаления таска |
Цитата:
|
add_task() будет работать с лямбда функциями?
Такая проблема, заголовочный файл обсыпан ошибками, мол std не содержит никаких корутинов. Что можно сделать в такой ситуации? https://forum.antichat.xyz/attachments/27873056/ https://forum.antichat.xyz/attachments/27873056/ UPD: Исправил ошибку. Нужно было перейти на самый свежий стандарт языка. Лямбды на месте 👍 C++: Код:
tasklist |
Удобная либа. Лямбды делаются легко. Возник только такой вопрос, можно ли как-то уйти ото всех этих секунд и миллисекунд, и работать чисто по кол-ву вызовов process()? Например, продолжить выполнение через 10 циклов вызовов process(). Сделал два tasklist, один вызывается в потоке, другой в хуке на рендер, чтобы один вызывать по времени, а другой по кадрам. Но если передавать в co_await обычное число, то размер этого числа ни на что не влияет:
C++: Код:
#pragma onceКомпилятор жалуется на либу за повторное включение, несмотря на #pragma once во всех файлах проекта. Конкретно на функции remove_task и remove_task_recursively. |
Цитата:
C++: [CODE] for ( auto i = 0u ; i Да-да умею отвечать вовремя Цитата:
https://forum.antichat.xyz/attachments/27889910/ |
[QUOTE="kin4stat"]
хз зачем это может понадобиться, но как костыль: C++: [CODE] for ( auto i = 0u ; i |
Цитата:
|
Цитата:
Цитата:
|
Есть ли возможность вызвать co_await с другой функцией и при этом иметь ссылку на ktwait? Мне нужно ожидать выполнения другой функции, но при этом иметь возможность досрочно её завершить. Проблема в том что co_await не работает с ссылкой, а при передачи владения ссылка меняется.
|
| Время: 12:30 |