| module core.thread.test; // needs access to getStackTop()/getStackBottom() |
| |
| import core.stdc.stdio; |
| import core.thread; |
| |
| ubyte[16384] data; |
| |
| void showThreadInfo() nothrow |
| { |
| try |
| { |
| auto top = getStackTop(); |
| auto bottom = getStackBottom(); |
| printf("tlsdata: %p\n", data.ptr); |
| printf("stack top: %p\n", getStackTop()); |
| printf("stack bottom:%p\n", getStackBottom()); |
| printf("used stack: %lld\n", cast(ulong)(bottom - top)); |
| } |
| catch(Exception e) |
| { |
| assert(false, e.msg); |
| } |
| } |
| |
| void main() |
| { |
| printf("### main\n"); |
| showThreadInfo(); |
| |
| printf("### thread\n"); |
| auto th = new Thread(&showThreadInfo, 16384); |
| th.start(); |
| th.join(); |
| |
| printf("### lowlevel thread\n"); |
| auto llth = createLowLevelThread(() { showThreadInfo(); }); |
| joinLowLevelThread(llth); |
| } |