source: tests/concurrent/mutexstmt/locks.cfa @ 22226e4

ADTast-experimentalenumpthread-emulationqualifiedEnum
Last change on this file since 22226e4 was 623d1c8, checked in by caparsons <caparson@…>, 2 years ago

added test changes

  • Property mode set to 100644
File size: 1.5 KB
Line 
1#include <mutex_stmt.hfa>
2#include <locks.hfa>
3#include <stats.hfa>
4
5const unsigned int num_times = 10000;
6
7single_acquisition_lock m1, m2, m3, m4, m5;
8
9thread T_Mutex {};
10bool insideFlag = false;
11int count = 0;
12
13void main( T_Mutex & this ) {
14        for (unsigned int i = 0; i < num_times; i++) {
15                mutex ( m1 ) count++;
16                mutex ( m1 ) {
17                        assert(!insideFlag);
18                        insideFlag = true;
19                        assert(insideFlag);
20                        insideFlag = false;
21                }
22        }
23}
24
25thread T_Multi {};
26
27void main( T_Multi & this ) {
28        for (unsigned int i = 0; i < num_times; i++) {
29                mutex ( m1 ) {
30                        assert(!insideFlag);
31                        insideFlag = true;
32                        assert(insideFlag);
33                        insideFlag = false;
34                }
35                mutex ( m1, m2, m3, m4, m5 ) {
36                        assert(!insideFlag);
37                        insideFlag = true;
38                        assert(insideFlag);
39                        insideFlag = false;
40                }
41                mutex ( m3, m1 ) {
42                        assert(!insideFlag);
43                        insideFlag = true;
44                        assert(insideFlag);
45                        insideFlag = false;
46                }
47                mutex ( m1, m2, m4 ) {
48                        assert(!insideFlag);
49                        insideFlag = true;
50                        assert(insideFlag);
51                        insideFlag = false;
52                }
53                mutex ( m1, m3, m4, m5 ) {
54                        assert(!insideFlag);
55                        insideFlag = true;
56                        assert(insideFlag);
57                        insideFlag = false;
58                }
59        }
60}
61
62int num_tasks = 10;
63int main() {
64        processor p[10];
65
66        printf("Start Test: single lock mutual exclusion\n");
67        {
68                T_Mutex t[10];
69        }
70        assert(count == num_tasks * num_times);
71        printf("End Test: single lock mutual exclusion\n");
72        printf("Start Test: multi lock deadlock/mutual exclusion\n");
73        {
74                T_Multi t[10];
75        }
76        printf("End Test: multi lock deadlock/mutual exclusion\n");
77}
Note: See TracBrowser for help on using the repository browser.