1 contributor
36 lines503 bytes
1#include <pthread.h>
2#include "coroutine.h"
3
4
5struct Task {
6 Future base;
7 Coroutine *cor;
8 Task_Entry entry;
9 void *param;
10 Future *awaiting_future;
11 bool canceled;
12 void *cancel_value;
13};
14
15
16static inline bool Task_IsCanceled(
17 Task *tsk
18){
19 return tsk->canceled;
20}
21
22
23static inline bool Task_Await(
24 Task *tsk,
25 void **res
26){
27 return Future_Await(&tsk->base, res);
28}
29
30
31static inline Future *Task_GetAwaitedFuture(
32 Task *tsk
33){
34 return tsk->awaiting_future;
35}
36