- Set a default PCM volume so that something can be heard when driver is
[AROS.git] / test / threads / exitthread.c
blobe5c99f547dc737bef168590f6cae9338250e2b40
1 #include <proto/thread.h>
2 #include <proto/dos.h>
3 #include <stdio.h>
5 void *thread_sub(void *data) {
6 uint32_t id = CurrentThread();
8 printf("[%d] starting sub\n", id);
10 Delay(50);
12 printf("[%d] exiting sub\n", id);
14 ExitThread((void*) id);
16 return NULL;
19 void *thread_main(void *data) {
20 int i;
21 uint32_t id_sub[10], ret;
22 uint32_t id = CurrentThread();
24 printf("[%d] starting\n", id);
26 Delay(50);
28 for (i = 0; i < 10; i++) {
29 id_sub[i] = CreateThread(thread_sub, NULL);
30 printf("created sub thread %d\n", id_sub[i]);
33 printf("[%d] exiting\n", id);
35 for (i = 0; i < 10; i++) {
36 printf("waiting for sub thread %d\n", id_sub[i]);
37 WaitThread(id_sub[i], (void **) &ret);
38 printf("sub thread %d return %d\n", id_sub[i], ret);
41 ExitThread((void*) id);
43 return NULL;
46 int main (int argc, char **argv) {
47 int i;
48 uint32_t id[10], ret;
50 for (i = 0; i < 10; i++) {
51 id[i] = CreateThread(thread_main, NULL);
52 printf("created thread %d\n", id[i]);
55 for (i = 0; i < 10; i++) {
56 printf("waiting for thread %d\n", id[i]);
57 WaitThread(id[i], (void **) &ret);
58 printf("thread %d return %d\n", id[i], ret);
61 return 0;