KS_STATUS_GENERR,
KS_STATUS_INACTIVE,
KS_STATUS_TIMEOUT,
+ KS_STATUS_DUPLICATE_OPERATION,
/* Memory pool errors */
KS_STATUS_REFS_EXIST, /* references exist */
KS_STATUS_ARG_NULL, /* function argument is null */
}
KS_DECLARE(ks_status_t) ks_thread_join(ks_thread_t *thread) {
+
+ if (thread->joined) {
+ return KS_STATUS_DUPLICATE_OPERATION;
+ }
+
#ifdef WIN32
WaitForSingleObject(thread->handle, INFINITE);
#else
void *ret;
pthread_join(thread->handle, &ret);
#endif
+
+ thread->joined++;
+
return KS_STATUS_SUCCESS;
}