#pragma once typedef void*( *func_t )( void* ); typedef struct __task { func_t func; void *args; } task_t; typedef struct __task_list { struct __task_list *next; task_t *task; } task_list_t; typedef struct __queue { int size; task_list_t *head; task_list_t *tail; } task_queue_t; void print_queue( task_queue_t *queue ); task_t *create_task( func_t func, void* args ); task_queue_t *queue_init( void ); void queue_destroy( task_queue_t *queue ); void enqueue( task_queue_t *queue, task_t *task ); task_t *dequeue( task_queue_t *queue ); int queque_size( task_queue_t *queue );