source: tests/concurrent/thread.cfa @ 87e0b015

ADTarm-ehast-experimentalenumforall-pointer-decayjacob/cs343-translationnew-astnew-ast-unique-exprpthread-emulationqualifiedEnum
Last change on this file since 87e0b015 was 924c5ce, checked in by Thierry Delisle <tdelisle@…>, 5 years ago

Moved thread.cfa back to using thread cast since it is fixed

  • Property mode set to 100644
File size: 812 bytes
Line 
1#include <fstream.hfa>
2#include <kernel.hfa>
3#include <stdlib.hfa>
4#include <thread.hfa>
5
6thread First  { semaphore* lock; };
7thread Second { semaphore* lock; };
8
9void ?{}( First  & this, semaphore & lock ) { ((thread&)this){ "Thread 1" }; this.lock = &lock; }
10void ?{}( Second & this, semaphore & lock ) { ((thread&)this){ "Thread 2" }; this.lock = &lock; }
11
12void main(First& this) {
13        for(int i = 0; i < 10; i++) {
14                sout | "First : Suspend No." | i + 1;
15                yield();
16        }
17        V(*this.lock);
18}
19
20void main(Second& this) {
21        P(*this.lock);
22        for(int i = 0; i < 10; i++) {
23                sout | "Second : Suspend No." | i + 1;
24                yield();
25        }
26}
27
28
29int main(int argc, char* argv[]) {
30        semaphore lock = { 0 };
31        sout | "User main begin";
32        {
33                processor p;
34                {
35                        First  f = { lock };
36                        Second s = { lock };
37                }
38        }
39        sout | "User main end";
40}
Note: See TracBrowser for help on using the repository browser.