Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
T
typon-concurrency
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Xavier Thompson
typon-concurrency
Commits
b6b67ac9
Commit
b6b67ac9
authored
Aug 11, 2022
by
Xavier Thompson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
typon.hpp: Add optimized fork overloads
parent
81addd67
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
20 additions
and
0 deletions
+20
-0
rt/include/typon/typon.hpp
rt/include/typon/typon.hpp
+20
-0
No files found.
rt/include/typon/typon.hpp
View file @
b6b67ac9
...
...
@@ -7,6 +7,7 @@
#include <typon/forked.hpp>
#include <typon/future.hpp>
#include <typon/join.hpp>
#include <typon/meta.hpp>
#include <typon/mutex.hpp>
#include <typon/promise.hpp>
#include <typon/root.hpp>
...
...
@@ -25,6 +26,25 @@ namespace typon
co_return
co_await
std
::
move
(
local_task
);
}
template
<
typename
Task
>
Fork
<
void
>
fork
(
Task
task
,
meta
::
Empty
)
{
// Put the task in a local variable to ensure its destructor will
// be called on co_return instead of only on coroutine destruction.
Task
local_task
=
std
::
move
(
task
);
co_await
std
::
move
(
local_task
);
}
template
<
typename
Task
>
Fork
<
void
>
fork
(
Task
task
,
typename
Task
::
promise_type
::
value_type
&
into
)
{
// Put the task in a local variable to ensure its destructor will
// be called on co_return instead of only on coroutine destruction.
Task
local_task
=
std
::
move
(
task
);
// The caller is responsible for garanteeing that the lifetime of
// referenced object will always encompass the lifetime of the fork.
into
=
co_await
std
::
move
(
local_task
);
}
template
<
typename
Task
>
Future
<
typename
Task
::
promise_type
::
value_type
>
future
(
Task
task
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment