Receiver
25.01.2022, 16:42
Описание:Stackful короутина - подпрограмма которая имеет свой контекст выполнения и может быть приостановлена из любой вложенной функции. "Библиотека" позволяет программно переключать контекст выполнения. Проще говоря, вы можете прервать выполнение своей функции в любой момент и перейти к выполнению другой. Это очень полезно, когда нужно избежать ожидания.
Пример:
v1v2
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 - результат выполнения короутины
Пример:
v1v2
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 - результат выполнения короутины