#include "thread_pool.h"
#include "thread_support.h"
static slong flint_thread_pool_num_available(thread_pool_t T)
{
slong i, num = 0;
thread_pool_entry_struct * D;
#if FLINT_USES_PTHREAD
pthread_mutex_lock(&T->mutex);
#endif
D = T->tdata;
if (T->length > 0)
{
for (i = 0; i < T->length; i++)
{
num += D[i].available;
}
}
#if FLINT_USES_PTHREAD
pthread_mutex_unlock(&T->mutex);
#endif
return num;
}
slong flint_get_num_available_threads(void)
{
if (global_thread_pool_initialized)
return flint_thread_pool_num_available(global_thread_pool) + 1;
return flint_get_num_threads();
}