task-6.c 704 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #include <stdlib.h>
  2. #include <unistd.h>
  3. int
  4. main ()
  5. {
  6. int x = 0, y = 0;
  7. #pragma omp parallel shared(x, y)
  8. #pragma omp master
  9. {
  10. #pragma omp task depend(out:y) shared(x, y)
  11. {
  12. sleep (1);
  13. x = 1;
  14. y = 1;
  15. }
  16. #pragma omp task depend(inout:y) shared(x, y)
  17. {
  18. if (x != 1 || y != 1)
  19. abort ();
  20. y++;
  21. }
  22. }
  23. if (x != 1 || y != 2)
  24. abort ();
  25. x = 0;
  26. y = 0;
  27. #pragma omp parallel
  28. #pragma omp master
  29. {
  30. #pragma omp task depend(out:y)
  31. {
  32. sleep (1);
  33. x = 1;
  34. y = 1;
  35. }
  36. #pragma omp task depend(inout:y)
  37. {
  38. if (x != 1 || y != 1)
  39. abort ();
  40. y++;
  41. }
  42. }
  43. if (x != 1 || y != 2)
  44. abort ();
  45. return 0;
  46. }