source: CIVL/examples/languageFeatures/civlBarrier.cvl@ 4b4bbb3

1.23 2.0 main test-branch
Last change on this file since 4b4bbb3 was eb43ab7, checked in by Manchun Zheng <zmanchun@…>, 12 years ago

added a bound variable to civlBarrier example.

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

  • Property mode set to 100644
File size: 757 bytes
Line 
1/**
2 * This example demonstrates the features of CIVL's system function for implementing barriers.
3 */
4
5#include<civlc.h>
6
7$input int N;
8$input int B;
9$assume N > 0 && N < B;
10$gbarrier gbarrier = $gbarrier_create($here, N);
11int counter = 0;
12
13void process(int id) {
14 $barrier barrier = $barrier_create($here, gbarrier, id);
15
16 while($true){
17 $assert(counter == 0);
18 $barrier_call(barrier);
19 counter++;
20 $barrier_call(barrier);
21 $assert(counter == N);
22 $barrier_call(barrier);
23 counter--;
24 $barrier_call(barrier);
25 }
26 $barrier_destroy(barrier);
27}
28
29void main(){
30 $proc procs[N];
31
32 for(int i = 0; i < N; i++)
33 procs[i] = $spawn process(i);
34 for(int i = 0; i < N; i++)
35 $wait(procs[i]);
36 $gbarrier_destroy(gbarrier);
37}
Note: See TracBrowser for help on using the repository browser.