source: src/tests/thread.c@ 409433da

ADT aaron-thesis arm-eh ast-experimental cleanup-dtors deferred_resn demangler enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr new-env no_list persistent-indexer pthread-emulation qualifiedEnum resolv-new with_gc
Last change on this file since 409433da was 348006f, checked in by Thierry Delisle <tdelisle@…>, 9 years ago

Renamed thread to thread_desc

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