source: tests/concurrent/thread.cfa@ 02fdb8e

ADT arm-eh ast-experimental cleanup-dtors enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since 02fdb8e was 107b01a, checked in by Thierry Delisle <tdelisle@…>, 7 years ago

Several changes to the makefiles

  • change .c tests to .cfa
  • add require for libtool in configure
  • libtoolize to fix some warnings
  • Property mode set to 100644
File size: 808 bytes
RevLine 
[73abe95]1#include <fstream.hfa>
2#include <kernel.hfa>
3#include <stdlib.hfa>
4#include <thread.hfa>
[0c92c9f]5
[f3c1737]6thread First { semaphore* lock; };
7thread Second { semaphore* lock; };
[0c92c9f]8
[b9f383f]9void ?{}( First & this, semaphore & lock ) { ((thread&)this){"Thread 1"}; this.lock = &lock; }
10void ?{}( Second & this, semaphore & lock ) { ((thread&)this){"Thread 2"}; this.lock = &lock; }
[0c92c9f]11
[83a071f9]12void main(First& this) {
[0c92c9f]13 for(int i = 0; i < 10; i++) {
[200fcb3]14 sout | "First : Suspend No." | i + 1;
[0c92c9f]15 yield();
16 }
[4cedd9f]17 V(*this.lock);
[0c92c9f]18}
19
[83a071f9]20void main(Second& this) {
[4cedd9f]21 P(*this.lock);
[0c92c9f]22 for(int i = 0; i < 10; i++) {
[200fcb3]23 sout | "Second : Suspend No." | i + 1;
[0c92c9f]24 yield();
25 }
26}
27
28
29int main(int argc, char* argv[]) {
[f3c1737]30 semaphore lock = { 0 };
[200fcb3]31 sout | "User main begin";
[0c92c9f]32 {
[ee897e4b]33 processor p;
[0c92c9f]34 {
[83a071f9]35 First f = { lock };
36 Second s = { lock };
[0c92c9f]37 }
38 }
[200fcb3]39 sout | "User main end";
[242a902]40}
Note: See TracBrowser for help on using the repository browser.