Nenhuma descrição
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

main-deadlock.c 659B

12345678910111213141516171819202122232425262728
  1. #include <stdio.h>
  2. #include "mythreads.h"
  3. pthread_mutex_t m1 = PTHREAD_MUTEX_INITIALIZER;
  4. pthread_mutex_t m2 = PTHREAD_MUTEX_INITIALIZER;
  5. void* worker(void* arg) {
  6. if ((long long) arg == 0) {
  7. Pthread_mutex_lock(&m1);
  8. Pthread_mutex_lock(&m2);
  9. } else {
  10. Pthread_mutex_lock(&m2);
  11. Pthread_mutex_lock(&m1);
  12. }
  13. Pthread_mutex_unlock(&m1);
  14. Pthread_mutex_unlock(&m2);
  15. return NULL;
  16. }
  17. int main(int argc, char *argv[]) {
  18. pthread_t p1, p2;
  19. Pthread_create(&p1, NULL, worker, (void *) (long long) 0);
  20. Pthread_create(&p2, NULL, worker, (void *) (long long) 1);
  21. Pthread_join(p1, NULL);
  22. Pthread_join(p2, NULL);
  23. return 0;
  24. }