source: CIVL/examples/concurrency/ibarrier.cvl

main
Last change on this file was 9f7b562, checked in by Stephen Siegel <siegel@…>, 2 years ago

Added ibarriers to concurrency library.

git-svn-id: svn://vsl.cis.udel.edu/civl/trunk@5894 fb995dde-84ed-4084-dfe6-e5aef3e2452c

  • Property mode set to 100644
File size: 784 bytes
Line 
1#include <stdio.h>
2#include "concurrency.cvh"
3
4$scope root = $here;
5
6int main() {
7 int n = 3, m = 3;
8 int time[n];
9 for (int i=0; i<n; i++) time[i] = 0;
10 $gibarrier gs = $gibarrier_create(root, n);
11 $parfor (int i:0..n-1) {
12 $ibarrier s = $ibarrier_create($here, gs, i);
13 for (int j=0; j<m; j++) {
14 printf("Iter %d: Thread %d in region %d\n", j, i, 0);
15 // other threads may get past ibarrier_arrive but never past
16 // ibarrier_wait because I have not yet done ibarrier_arrive...
17 $assert($forall (int k:0..n-1) time[k] <= 1 + time[i]);
18 $ibarrier_arrive(s);
19 time[i]++;
20 printf("Iter %d: Thread %d in region %d\n", j, i, 1);
21 $ibarrier_wait(s);
22 time[i]++;
23 }
24 $ibarrier_destroy(s);
25 }
26 $gibarrier_destroy(gs);
27}
Note: See TracBrowser for help on using the repository browser.