source: tests/concurrent/thread.cfa@ cca034e

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

Re-arranged and commented low-level headers.
Main goal was for better support of weakso locks that are comming.

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