Demo program for mbed 5 thread start compile rerror
Fork of mbed-os-example-mbed5-blinky by
main.cpp@17:267747192719, 2016-11-03 (annotated)
- Committer:
- Roietronics
- Date:
- Thu Nov 03 09:19:33 2016 +0000
- Revision:
- 17:267747192719
- Parent:
- 8:bb09890333fe
- Child:
- 18:7f2d0c1cfb33
Thead Bug demo
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Jonathan Austin |
0:2757d7abb7d9 | 1 | #include "mbed.h" |
Roietronics | 17:267747192719 | 2 | #include "Thread.h" |
Jonathan Austin |
0:2757d7abb7d9 | 3 | |
Jonathan Austin |
0:2757d7abb7d9 | 4 | DigitalOut led1(LED1); |
Jonathan Austin |
0:2757d7abb7d9 | 5 | |
Roietronics | 17:267747192719 | 6 | #define mySignal 0x01 |
Roietronics | 17:267747192719 | 7 | class Test |
Roietronics | 17:267747192719 | 8 | { |
Roietronics | 17:267747192719 | 9 | public: |
Roietronics | 17:267747192719 | 10 | osThreadId _id; |
Roietronics | 17:267747192719 | 11 | Thread _thread; |
Roietronics | 17:267747192719 | 12 | |
Roietronics | 17:267747192719 | 13 | void myWorker(void* arge) |
Roietronics | 17:267747192719 | 14 | { |
Roietronics | 17:267747192719 | 15 | int i; |
Roietronics | 17:267747192719 | 16 | i++; |
Roietronics | 17:267747192719 | 17 | osSignalSet(_id, mySignal); |
Roietronics | 17:267747192719 | 18 | |
Roietronics | 17:267747192719 | 19 | } |
Roietronics | 17:267747192719 | 20 | |
Roietronics | 17:267747192719 | 21 | Test(osThreadId id) : |
Roietronics | 17:267747192719 | 22 | _id(id), |
Roietronics | 17:267747192719 | 23 | _thread() |
Roietronics | 17:267747192719 | 24 | { |
Roietronics | 17:267747192719 | 25 | _thread.start(this, &Test::myWorker); |
Roietronics | 17:267747192719 | 26 | } |
Roietronics | 17:267747192719 | 27 | |
Roietronics | 17:267747192719 | 28 | }; |
Roietronics | 17:267747192719 | 29 | |
Jonathan Austin |
1:846c97078558 | 30 | // main() runs in its own thread in the OS |
Jonathan Austin |
1:846c97078558 | 31 | // (note the calls to Thread::wait below for delays) |
Jonathan Austin |
0:2757d7abb7d9 | 32 | int main() { |
Roietronics | 17:267747192719 | 33 | osThreadId id = Thread::gettid(); |
Roietronics | 17:267747192719 | 34 | Test* test = new Test(id); |
Jonathan Austin |
0:2757d7abb7d9 | 35 | while (true) { |
Jonathan Austin |
0:2757d7abb7d9 | 36 | led1 = !led1; |
Jonathan Austin |
0:2757d7abb7d9 | 37 | Thread::wait(500); |
Jonathan Austin |
0:2757d7abb7d9 | 38 | } |
Jonathan Austin |
0:2757d7abb7d9 | 39 | } |
Jonathan Austin |
1:846c97078558 | 40 |