ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Stackful coroutines (https://forum.antichat.xyz/showthread.php?t=1418982)

Receiver 25.01.2022 16:42

Описание:Stackful короутина - подпрограмма которая имеет свой контекст выполнения и может быть приостановлена из любой вложенной функции. "Библиотека" позволяет программно переключать контекст выполнения. Проще говоря, вы можете прервать выполнение своей функции в любой момент и перейти к выполнению другой. Это очень полезно, когда нужно избежать ожидания.

Пример:

v1​
v2​


C++:





Код:

coroutine
outer
(
[
]
(
coroutine
&
inner
)
{
printf
(
"1"
)
;
inner
.
yield
(
)
;
// приостанавливаем функцию
printf
(
"3"
)
;
}
)
;
outer
.
resume
(
)
;
// запускаем функцию
printf
(
"2"
)
;
outer
.
resume
(
)
;
// переходим обратно к функции
printf
(
"4"
)
;





C++:





[CODE]
std
::
string text
{
""
}
;
coroutine

outer
(
[
]
(
auto
&
inner
,
std
::
string
&
input
)
{
for
(
int
i
=
0
;
i




Цитата:

Сообщение от Спойлер

Появилось:
  • Теперь single-header library​
  • Аргументы в функторах с поддержкой ссылок​
  • is_finished - завершена ли короутина​
  • get_result - результат выполнения короутины​



Время: 01:15