
14.10.2021, 20:46
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
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
|
|
|

14.10.2021, 20:52
|
|
Постоянный
Регистрация: 21.08.2015
Сообщений: 343
С нами:
5646349
Репутация:
163
|
|
.

|
|
|

14.10.2021, 21:05
|
|
Постоянный
Регистрация: 03.05.2020
Сообщений: 385
С нами:
3174020
Репутация:
213
|
|
|
|
|

15.10.2021, 09:42
|
|
Познавший АНТИЧАТ
Регистрация: 29.09.2018
Сообщений: 1,292
С нами:
4012500
Репутация:
138
|
|
ахуенно бро
|
|
|

15.10.2021, 16:48
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
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
|
|
|

15.10.2021, 20:06
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от SR_team
UPD2: Проверил сам потоки. Все корутины катчатся в инстанс потока main. И bar, который вызывает co_wait из потока t1, продолжает свое выполнение уже в потоке main
Починил. Теперь можно гонять таски своего потока, чужого потока, и все таски в приципе.
Также теперь при эвейте другой таски текущая будет ждать окончания выполнения таски которую co_await'нули.
Также теперь можно удалять таски для чужих потоков, и в приципе во всем тасклисте по всем потокам. Небезопасно если вы удаляете таску которая эвейтнула другую таску. Мне слишком лень это фиксить.
|
|
|

15.10.2021, 20:54
|
|
Флудер
Регистрация: 26.10.2013
Сообщений: 4,924
С нами:
6603505
Репутация:
183
|
|
Сообщение от kin4stat
Починил. Теперь можно гонять таски своего потока, чужого потока, и все таски в приципе.
Также теперь при эвейте другой таски текущая будет ждать окончания выполнения таски которую co_await'нули.
Также теперь можно удалять таски для чужих потоков, и в приципе во всем тасклисте по всем потокам. Небезопасно если вы удаляете таску которая эвейтнула другую таску. Мне слишком лень это фиксить.
а нельзя несколько инстансов завести? Просто в текущей реализации пока выполняются корутины из одного потока, корутины другого потока спят, а до вызова co_wait может быть очень тяжелая операция
|
|
|

16.10.2021, 16:21
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
UPDATE:
Добавлено создание пользовательских инстансов тасклистов.
Также теперь можно безопасно удалять таски из очереди
|
|
|

17.10.2021, 19:05
|
|
Участник форума
Регистрация: 08.03.2019
Сообщений: 121
С нами:
3781678
Репутация:
113
|
|
|
|
|

17.10.2021, 20:03
|
|
Флудер
Регистрация: 06.11.2017
Сообщений: 2,759
С нами:
4483143
Репутация:
183
|
|
Сообщение от legendabrn
Зачем тут ссылка на ktwait?
А как ты еще представляешь себе удаление таска?
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|