Esempio n. 1
0
void ThreadPool_free(ThreadPool** th_pool_ptr)
{
	ThreadPool_close(*th_pool_ptr);

	Queue_free(&((*th_pool_ptr)->idle_queue));
	Queue_free(&((*th_pool_ptr)->curt_queue));

	pthread_mutex_destroy(&((*th_pool_ptr)->pool_lock));
	pthread_cond_destroy(&((*th_pool_ptr)->pool_cond));
	pthread_mutex_destroy(&((*th_pool_ptr)->stop_lock));
	pthread_cond_destroy(&((*th_pool_ptr)->stop_cond));

	safe_free((void**)th_pool_ptr);

	log_debug(log_cat, "thread pool free success");
}
Esempio n. 2
0
static int test_enqueue()
{
    Queue* queue = Queue_new(0);
    int array[] = {1, 2, 3};
    Queue_enqueue(queue, &array[0]);
    Queue_enqueue(queue, &array[1]);
    Queue_enqueue(queue, &array[2]);
    nu_assert_eq_int(3, Queue_size(queue));
    Queue_free(queue);
    return 0;
}
Esempio n. 3
0
static int test_capacity()
{
    Queue* queue = Queue_new(2);
    int array[] = {1, 2, 3};
    nu_assert(Queue_enqueue(queue, &array[0]));
    nu_assert(Queue_enqueue(queue, &array[1]));
    nu_assert(!Queue_enqueue(queue, &array[2]));
    Queue_dequeue(queue);
    nu_assert(Queue_enqueue(queue, &array[2]));
    Queue_free(queue);
    return 0;
}
Esempio n. 4
0
static bool run_test(
    Queue * queue)
{
    TEST(void *,
         "%p",
             ((void *)queue),
         !=,
         NULL);

    if (!test_empty(queue))
        return false;

    if (!push_range(queue, 0, 0, 4000))
        return false;
    if (!pop_range(queue, 4000, 0, 1000))
        return false;
    if (!push_range(queue, 3000, 4000, 6000))
        return false;
    if (!pop_range(queue, 5000, 1000, 6000))
        return false;

    if (!test_empty(queue))
        return false;

    if (!push_range(queue, 0, 0, 1000))
        return false;
    if (!pop_range(queue, 1000, 0, 999))
        return false;
    if (!push_range(queue, 1, 1000, 6000))
        return false;
    if (!pop_range(queue, 5001, 999, 6000))
        return false;

    if (!test_empty(queue))
        return false;

    if (!push_range(queue, 0, 0, 2000))
        return false;
    if (!pop_range(queue, 2000, 0, 1998))
        return false;
    if (!push_range(queue, 2, 2000, 10000))
        return false;
    if (!pop_range(queue, 8002, 1998, 10000))
        return false;

    if (!test_empty(queue))
        return false;

    Queue_free(queue);

    return true;
}
Esempio n. 5
0
static int test_size()
{
    Queue* queue = Queue_new(0);
    nu_assert_eq_int(0, Queue_size(queue));

    int array[] = {1};
    Queue_enqueue(queue, &array[0]);
    nu_assert_eq_int(1, Queue_size(queue));
    Queue_dequeue(queue);
    nu_assert_eq_int(0, Queue_size(queue));
    Queue_free(queue);
    return 0;
}
Esempio n. 6
0
static int test_empty()
{
    Queue* queue = Queue_new(0);
    nu_assert(Queue_empty(queue));

    int array[] = {1};
    Queue_enqueue(queue, &array[0]);
    nu_assert(!Queue_empty(queue));
    Queue_dequeue(queue);
    nu_assert(Queue_empty(queue));
    Queue_free(queue);
    return 0;
}
Esempio n. 7
0
static int test_front_back()
{
    Queue* queue = Queue_new(0);
    nu_assert_eq_ptr(NULL, Queue_front(queue));
    nu_assert_eq_ptr(NULL, Queue_back(queue));

    int array[] = {1, 2, 3};
    Queue_enqueue(queue, &array[0]);
    Queue_enqueue(queue, &array[1]);
    Queue_enqueue(queue, &array[2]);
    nu_assert_eq_ptr(&array[0], Queue_front(queue));
    nu_assert_eq_ptr(&array[2], Queue_back(queue));
    nu_assert_eq_int(3, Queue_size(queue));
    Queue_free(queue);
    return 0;
}