source: src/tests/thread.c @ 13e2c54

ADTaaron-thesisarm-ehast-experimentalcleanup-dtorsdeferred_resndemanglerenumforall-pointer-decayjacob/cs343-translationjenkins-sandboxnew-astnew-ast-unique-exprnew-envno_listpersistent-indexerpthread-emulationqualifiedEnumresolv-newwith_gc
Last change on this file since 13e2c54 was bd4d011, checked in by Thierry Delisle <tdelisle@…>, 8 years ago

Implemented thread keyword

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