source: tests/concurrent/joinerror.cfa@ cca034e

ADT ast-experimental
Last change on this file since cca034e was 0dbecad, checked in by Thierry Delisle <tdelisle@…>, 5 years ago

Added tests for join thread

  • Property mode set to 100644
File size: 1.0 KB
Line 
1#include <fstream.hfa>
2#include <thread.hfa>
3
4thread Worker { volatile int result; };
5
6void main(Worker & this) {
7 this.result = -10;
8 for(50) {
9 yield();
10 }
11 this.result = 42;
12}
13
14int get_result( Worker & mutex this ) {
15 return this.result;
16}
17
18thread OtherWorker { volatile int result; };
19
20void main(OtherWorker & this) {
21 this.result = -10;
22 LOOP: for() {
23 waitfor( ^?{} : this) {
24 break LOOP;
25 }
26 or else {
27 yield();
28 }
29 }
30 this.result = 27;
31}
32
33int get_result( OtherWorker & mutex this ) {
34 return this.result;
35}
36
37int main(int argc, char* argv[]) {
38 {
39 Worker workers[17];
40 for(i; 17) {
41 join( workers[i] );
42 int res = get_result( workers[i] );
43 if( res != 42 ) {
44 sout | "Worker" | i | "got incorrect result:" | res;
45 }
46 }
47 }
48 sout | "All workers got 42";
49
50 {
51 OtherWorker workers[17];
52 for(i; 17) {
53 join( workers[i] );
54 int res = get_result( workers[i] );
55 if( res != 27 ) {
56 sout | "Other Worker" | i | "got incorrect result:" | res;
57 }
58 }
59 }
60 sout | "All other workers got 27";
61}
Note: See TracBrowser for help on using the repository browser.