Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <assert.h>
  4.  
  5. #include <ctype.h>
  6. #include <unistd.h>
  7. #include <pthread.h>
  8. #include <sys/time.h>
  9. #include <string.h>
  10. #include <stdint.h>
  11.  
  12. #include "job_queue.h"
  13.  
  14.  
  15. pthread_cond_t empty = PTHREAD_COND_INITIALIZER;
  16. pthread_cond_t fill = PTHREAD_COND_INITIALIZER;
  17. pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
  18.  
  19. int job_queue_init(struct job_queue *job_queue, int capacity) { // alokerer plads
  20. job_queue->maxCapacity = capacity;
  21. job_queue->rear = 0;
  22. job_queue->front = 0;
  23. job_queue->buffer = malloc(sizeof(void*) * capacity);
  24. job_queue->available = capacity;
  25. return 0;
  26. }
  27.  
  28. int job_queue_destroy(struct job_queue *job_queue) {
  29. assert(0);
  30. }
  31.  
  32. int job_queue_push(struct job_queue *job_queue, void *data) {
  33. //if (job_queue->buffer[job_queue->rear]) //hvis der er noget på rear er bufferen ful
  34. while (job_queue->available == 0 ) // sørg for at sikre at den ikke kan blive negativ
  35. {
  36. pthread_cond_wait(&empty, &m);
  37. }
  38. job_queue->buffer[job_queue->rear] = data;
  39. job_queue->available--;
  40. job_queue->rear ++; // noget modulus hvis den overskrider max capacity
  41. pthread_cond_signal(&fill);
  42.  
  43. //while ( )
  44. return 0;
  45.  
  46. }
  47.  
  48. int job_queue_pop(struct job_queue *job_queue, void **data) {
  49. assert(0);
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement