source: tests/concurrency/readyQ/barrier_sleeper.cfa @ b5e3a80

Last change on this file since b5e3a80 was b2fa3c2, checked in by Peter A. Buhr <pabuhr@…>, 18 months ago

fix comments referring to concurrency directory

  • Property mode set to 100644
File size: 1.1 KB
Line 
1//
2// Cforall Version 1.0.0 Copyright (C) 2022 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// barrier_sleeper.cfa -- testing the ready-queue
8//
9// Author           : Thierry Delisle
10// Created On       : Fri Apr 01 14:01:00 2022
11// Last Modified By :
12// Last Modified On :
13// Update Count     :
14//
15
16// Test validates that processors running out of work repeatedly won't deadlock
17// Processors and thread are removed in an interleaved fashion for a weirder case.
18
19#include <concurrency/barrier.hfa>
20#include <fstream.hfa>
21#include <time.hfa>
22#include <thread.hfa>
23
24const unsigned NUM_LAPS = 173;
25const unsigned NUM_THREADS = 11;
26
27barrier bar = { NUM_THREADS };
28
29thread Eager {};
30void main( Eager & ) {
31        for(NUM_LAPS) {
32                block(bar);
33        }
34}
35
36thread Sleeper{};
37void main( Sleeper & ) {
38        for(NUM_LAPS) {
39                sleep(500`us);
40                block(bar);
41        }
42}
43
44int main() {
45        {
46                processor p1[2];
47                {
48                        if (NUM_THREADS <= 4) sout | "Insufficient threads";
49                        Eager e[NUM_THREADS - 3];
50                        {
51                                processor p2[2];
52                                {
53                                        Sleeper s[3];
54                                }
55                        }
56                }
57        }
58        sout | "Done";
59}
Note: See TracBrowser for help on using the repository browser.