Home | History | Annotate | Download | only in src

Lines Matching full:future

21 #include "osi/include/future.h"
32 semaphore_t *semaphore; // NULL semaphore means immediate future
36 static void future_free(future_t *future);
62 void future_ready(future_t *future, void *value) {
63 assert(future != NULL);
64 assert(future->ready_can_be_called);
66 future->ready_can_be_called = false;
67 future->result = value;
68 semaphore_post(future->semaphore);
71 void *future_await(future_t *future) {
72 assert(future != NULL);
74 // If the future is immediate, it will not have a semaphore
75 if (future->semaphore)
76 semaphore_wait(future->semaphore);
78 void *result = future->result;
79 future_free(future);
83 static void future_free(future_t *future) {
84 if (!future)
87 semaphore_free(future->semaphore);
88 osi_free(future);