Aucune description
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

vector-try-wait.c 693B

123456789101112131415161718192021222324252627282930313233343536
  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. int retry = 0;
  9. void vector_add(vector_t *v_dst, vector_t *v_src) {
  10. top:
  11. if (pthread_mutex_trylock(&v_dst->lock) != 0) {
  12. goto top;
  13. }
  14. if (pthread_mutex_trylock(&v_src->lock) != 0) {
  15. retry++;
  16. Pthread_mutex_unlock(&v_dst->lock);
  17. goto top;
  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_dst->lock);
  24. Pthread_mutex_unlock(&v_src->lock);
  25. }
  26. void fini() {
  27. printf("Retries: %d\n", retry);
  28. }
  29. #include "main-common.c"