1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #include "mandelbrot.h"
- queue_t *initialize_queue()
- {
- queue_t *q;
- q = (queue_t *) malloc(sizeof(queue_t *));
- return q;
- }
- void enqueue(queue_t * q, mandel_t * w, pthread_mutex_t * lock)
- {
- struct queue_node_t *aux;
- pthread_mutex_lock(lock);
- if (q->head == NULL) {
- q->head =
- (struct queue_node_t *)
- malloc(sizeof(struct queue_node_t *));
- q->head->next = NULL;
- q->head->node = w;
- q->tail = q->head;
- } else {
- aux =
- (struct queue_node_t *)
- malloc(sizeof(struct queue_node_t *));
- aux->next = NULL;
- aux->node = w;
- q->tail->next = aux;
- q->tail = aux;
- }
- pthread_mutex_unlock(lock);
- }
- mandel_t *dequeue(queue_t * q, pthread_mutex_t * lock)
- {
- struct queue_node_t *aux;
- mandel_t *ret_val;
- pthread_mutex_lock(lock);
-
- if (q->head == NULL) {
- ret_val = NULL;
- }
- else if (q->head == q->tail) {
- aux = q->head;
- ret_val = aux->node;
- q->head = NULL;
- q->tail = NULL;
- }
- else {
- aux = q->head;
- ret_val = aux->node;
- q->head = aux->next;
- }
- pthread_mutex_unlock(lock);
- return ret_val;
- }
- int is_empty(queue_t * q, pthread_mutex_t * lock)
- {
- int ret = 0;
- pthread_mutex_lock(lock);
- if (q->head == NULL) ret = 1;
- pthread_mutex_unlock(lock);
-
- return (ret);
- }
- void destroy_queue(queue_t * q)
- {
- struct queue_node_t *aux, *next;
- aux = q->head;
- while (aux != NULL) {
- next = aux->next;
- free(aux);
- if (next != NULL)
- aux = next;
- }
- free(q);
- }
|