Nav apraksta
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

vector-global-order.c 765B

1234567891011121314151617181920212223242526272829303132333435
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. #include "mythreads.h"
  6. #include "main-header.h"
  7. #include "vector-header.h"
  8. void vector_add(vector_t *v_dst, vector_t *v_src) {
  9. if (v_dst < v_src) {
  10. Pthread_mutex_lock(&v_dst->lock);
  11. Pthread_mutex_lock(&v_src->lock);
  12. } else if (v_dst > v_src) {
  13. Pthread_mutex_lock(&v_src->lock);
  14. Pthread_mutex_lock(&v_dst->lock);
  15. } else {
  16. // special case: src and dst are the same
  17. Pthread_mutex_lock(&v_src->lock);
  18. }
  19. int i;
  20. for (i = 0; i < VECTOR_SIZE; i++) {
  21. v_dst->values[i] = v_dst->values[i] + v_src->values[i];
  22. }
  23. Pthread_mutex_unlock(&v_src->lock);
  24. if (v_dst != v_src)
  25. Pthread_mutex_unlock(&v_dst->lock);
  26. }
  27. void fini() {}
  28. #include "main-common.c"