summaryrefslogtreecommitdiffstats
path: root/libdimension/future.c
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2014-04-26 15:09:01 -0400
committerTavian Barnes <tavianator@tavianator.com>2014-04-26 18:06:45 -0400
commit46ab5e42be9b676242e3a7aef8748b08ac52a303 (patch)
tree56e6dfedd97c0fb14b3ab8f693af80d8749a16ec /libdimension/future.c
parentbc1ac83133bb32ce3795c4781fd504580ae27d8b (diff)
downloaddimension-46ab5e42be9b676242e3a7aef8748b08ac52a303.tar.xz
future: Add to benchmark.
Diffstat (limited to 'libdimension/future.c')
-rw-r--r--libdimension/future.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/libdimension/future.c b/libdimension/future.c
index c344a8e..f62c01d 100644
--- a/libdimension/future.c
+++ b/libdimension/future.c
@@ -55,6 +55,19 @@ dmnsn_new_future(void)
return future;
}
+static void
+dmnsn_delete_future(dmnsn_future *future)
+{
+ if (future) {
+ dmnsn_destroy_cond(&future->resume_cond);
+ dmnsn_destroy_cond(&future->all_running_cond);
+ dmnsn_destroy_cond(&future->none_running_cond);
+ dmnsn_destroy_cond(&future->cond);
+ dmnsn_destroy_mutex(&future->mutex);
+ dmnsn_free(future);
+ }
+}
+
/* Join the worker thread and delete `future'. */
int
dmnsn_future_join(dmnsn_future *future)
@@ -73,12 +86,7 @@ dmnsn_future_join(dmnsn_future *future)
}
/* Free the future object */
- dmnsn_destroy_cond(&future->resume_cond);
- dmnsn_destroy_cond(&future->all_running_cond);
- dmnsn_destroy_cond(&future->none_running_cond);
- dmnsn_destroy_cond(&future->cond);
- dmnsn_destroy_mutex(&future->mutex);
- dmnsn_free(future);
+ dmnsn_delete_future(future);
}
return retval;