source: tests/io/io-acquire.cfa@ 180f249

ADT ast-experimental enum forall-pointer-decay pthread-emulation qualifiedEnum
Last change on this file since 180f249 was cbedb611, checked in by Peter A. Buhr <pabuhr@…>, 4 years ago

formatting

  • Property mode set to 100644
File size: 1.7 KB
Line 
1//
2// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
3//
4// The contents of this file are covered under the licence agreement in the
5// file "LICENCE" distributed with Cforall.
6//
7// io-acquire.cfa --
8//
9// Author : Peter A. Buhr
10// Created On : Mon Mar 1 18:40:09 2021
11// Last Modified By : Peter A. Buhr
12// Last Modified On : Tue Apr 27 11:49:34 2021
13// Update Count : 18
14//
15
16#include <fstream.hfa>
17#include <thread.hfa>
18
19thread T {};
20void main( T & ) {
21 // output from parallel threads should not be scrambled
22
23 for ( 100 ) { // local protection
24 sout | acquire | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
25 }
26 { // global protection (RAII)
27 osacquire acq = { sout };
28 for ( 100 ) {
29 sout | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
30 }
31 }
32 { // duplicate protection demonstrating recursive lock
33 osacquire acq = { sout };
34 for ( 100 ) {
35 osacquire acq = { sout };
36 sout | acquire | 1 | 2 | 3 | 4 | 5 | acquire | 6 | 7 | 8 | 9;
37 sout | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;
38 }
39 }
40
41 // above output used as input to parallel threads
42
43 int a, b, c, d, e, f, g, h, i;
44 for ( 100 ) { // local protection
45 sin | acquire | a | b | c | d | e | f | g | h | i;
46 }
47 { // global protection (RAII)
48 isacquire acq = { sin };
49 for ( 100 ) {
50 sin | a | b | c | d | e | f | g | h | i;
51 }
52 }
53 { // duplicate protection demonstrating recursive lock
54 isacquire acq = { sin };
55 for ( 100 ) {
56 isacquire acq = { sin };
57 sin | acquire | a | b | c | d | e | acquire | f | g | h | i;
58 sin | a | b | c | d | e | f | g | h | i;
59 }
60 }
61}
62int main() {
63 processor p;
64 T t[5];
65}
66
67// Local Variables: //
68// tab-width: 4 //
69// compile-command: "cfa io-acquire.cfa" //
70// End: //
Note: See TracBrowser for help on using the repository browser.