ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   ktcoro_wait - задержки без потоков (https://forum.antichat.xyz/showthread.php?t=1404686)

kin4stat 14.10.2021 20:46

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

memir 14.10.2021 20:52

.

https://forum.antichat.xyz/attachments/27862995/

sc6ut 14.10.2021 21:05

Цитата:

Сообщение от memir

.

https://forum.antichat.xyz/attachments/27863018/

F0RQU1N and 15.10.2021 09:42

ахуенно бро

SR_team 15.10.2021 16:48

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


kin4stat 15.10.2021 20:06

Цитата:

Сообщение от SR_team

UPD2: Проверил сам потоки. Все корутины катчатся в инстанс потока main. И bar, который вызывает co_wait из потока t1, продолжает свое выполнение уже в потоке main

Починил. Теперь можно гонять таски своего потока, чужого потока, и все таски в приципе.

Также теперь при эвейте другой таски текущая будет ждать окончания выполнения таски которую co_await'нули.

Также теперь можно удалять таски для чужих потоков, и в приципе во всем тасклисте по всем потокам. Небезопасно если вы удаляете таску которая эвейтнула другую таску. Мне слишком лень это фиксить.

SR_team 15.10.2021 20:54

Цитата:

Сообщение от kin4stat

Починил. Теперь можно гонять таски своего потока, чужого потока, и все таски в приципе.
Также теперь при эвейте другой таски текущая будет ждать окончания выполнения таски которую co_await'нули.
Также теперь можно удалять таски для чужих потоков, и в приципе во всем тасклисте по всем потокам. Небезопасно если вы удаляете таску которая эвейтнула другую таску. Мне слишком лень это фиксить.

а нельзя несколько инстансов завести? Просто в текущей реализации пока выполняются корутины из одного потока, корутины другого потока спят, а до вызова co_wait может быть очень тяжелая операция

kin4stat 16.10.2021 16:21

UPDATE:

Добавлено создание пользовательских инстансов тасклистов.

Также теперь можно безопасно удалять таски из очереди

legendabrn 17.10.2021 19:05

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: приведи пример удаления таска

kin4stat 17.10.2021 20:03

Цитата:

Сообщение от legendabrn

Зачем тут ссылка на ktwait?

А как ты еще представляешь себе удаление таска?


Время: 20:50