model.c 975 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include "queue.h"
  4. #include "worker.h"
  5. void sum(int argc, char **values, char *buf_return)
  6. {
  7. if (argc != 2) {
  8. buf_return[0] = 0;
  9. return;
  10. } else {
  11. long int a = strtol(values[0], NULL, 10);
  12. long int b = strtol(values[1], NULL, 10);
  13. long int sum = a + b;
  14. sprintf(buf_return, "%d", sum);
  15. }
  16. }
  17. int main(int argc, char **argv)
  18. {
  19. worker *w, *x;
  20. queue *q;
  21. q = initialize_queue();
  22. char *buf1, *buf2;
  23. char **params1 = malloc(sizeof(char *) * 2);
  24. params1[0] = "1";
  25. params1[1] = "2";
  26. w = new_worker(sum, 2, params1, 10, buf1);
  27. enqueue(q, w);
  28. char **params2 = malloc(sizeof(char *) * 2);
  29. params2[0] = "3";
  30. params2[1] = "4";
  31. w = new_worker(sum, 2, params2, 10, buf2);
  32. enqueue(q, w);
  33. x = dequeue(q);
  34. execute(x);
  35. printf("\nValue 1: %s", x->buf_return);
  36. x = dequeue(q);
  37. execute(x);
  38. printf("\nValue 2: %s", x->buf_return);
  39. return (0);
  40. }