Mercurial > sdl-ios-xcode
comparison test/torturethread.c @ 1662:782fd950bd46 SDL-1.3
Revamp of the video system in progress - adding support for multiple displays, multiple windows, and a full video mode selection API.
WARNING: None of the video drivers have been updated for the new API yet! The API is still under design and very fluid.
The code is now run through a consistent indent format:
indent -i4 -nut -nsc -br -ce
The headers are being converted to automatically generate doxygen documentation.
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sun, 28 May 2006 13:04:16 +0000 |
parents | 14717b52abc0 |
children | 4da1ee79c9af |
comparison
equal
deleted
inserted
replaced
1661:281d3f4870e5 | 1662:782fd950bd46 |
---|---|
12 #define NUMTHREADS 10 | 12 #define NUMTHREADS 10 |
13 | 13 |
14 static char volatile time_for_threads_to_die[NUMTHREADS]; | 14 static char volatile time_for_threads_to_die[NUMTHREADS]; |
15 | 15 |
16 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ | 16 /* Call this instead of exit(), so we can clean up SDL: atexit() is evil. */ |
17 static void quit(int rc) | 17 static void |
18 quit (int rc) | |
18 { | 19 { |
19 SDL_Quit(); | 20 SDL_Quit (); |
20 exit(rc); | 21 exit (rc); |
21 } | 22 } |
22 | 23 |
23 int SDLCALL SubThreadFunc(void *data) { | 24 int SDLCALL |
24 while(! *(int volatile *)data) { | 25 SubThreadFunc (void *data) |
25 ; /*SDL_Delay(10);*/ /* do nothing */ | 26 { |
26 } | 27 while (!*(int volatile *) data) { |
27 return 0; | 28 ; /*SDL_Delay(10); *//* do nothing */ |
29 } | |
30 return 0; | |
28 } | 31 } |
29 | 32 |
30 int SDLCALL ThreadFunc(void *data) { | 33 int SDLCALL |
31 SDL_Thread *sub_threads[NUMTHREADS]; | 34 ThreadFunc (void *data) |
32 int flags[NUMTHREADS]; | 35 { |
33 int i; | 36 SDL_Thread *sub_threads[NUMTHREADS]; |
34 int tid = (int)(uintptr_t)data; | 37 int flags[NUMTHREADS]; |
38 int i; | |
39 int tid = (int) (uintptr_t) data; | |
35 | 40 |
36 fprintf(stderr, "Creating Thread %d\n", tid); | 41 fprintf (stderr, "Creating Thread %d\n", tid); |
37 | 42 |
38 for(i = 0; i < NUMTHREADS; i++) { | 43 for (i = 0; i < NUMTHREADS; i++) { |
39 flags[i] = 0; | 44 flags[i] = 0; |
40 sub_threads[i] = SDL_CreateThread(SubThreadFunc, &flags[i]); | 45 sub_threads[i] = SDL_CreateThread (SubThreadFunc, &flags[i]); |
41 } | 46 } |
42 | 47 |
43 printf("Thread '%d' waiting for signal\n", tid); | 48 printf ("Thread '%d' waiting for signal\n", tid); |
44 while(time_for_threads_to_die[tid] != 1) { | 49 while (time_for_threads_to_die[tid] != 1) { |
45 ; /* do nothing */ | 50 ; /* do nothing */ |
46 } | 51 } |
47 | 52 |
48 printf("Thread '%d' sending signals to subthreads\n", tid); | 53 printf ("Thread '%d' sending signals to subthreads\n", tid); |
49 for(i = 0; i < NUMTHREADS; i++) { | 54 for (i = 0; i < NUMTHREADS; i++) { |
50 flags[i] = 1; | 55 flags[i] = 1; |
51 SDL_WaitThread(sub_threads[i], NULL); | 56 SDL_WaitThread (sub_threads[i], NULL); |
52 } | 57 } |
53 | 58 |
54 printf("Thread '%d' exiting!\n", tid); | 59 printf ("Thread '%d' exiting!\n", tid); |
55 | 60 |
56 return 0; | 61 return 0; |
57 } | 62 } |
58 | 63 |
59 int main(int argc, char *argv[]) | 64 int |
65 main (int argc, char *argv[]) | |
60 { | 66 { |
61 SDL_Thread *threads[NUMTHREADS]; | 67 SDL_Thread *threads[NUMTHREADS]; |
62 int i; | 68 int i; |
63 | 69 |
64 /* Load the SDL library */ | 70 /* Load the SDL library */ |
65 if ( SDL_Init(0) < 0 ) { | 71 if (SDL_Init (0) < 0) { |
66 fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError()); | 72 fprintf (stderr, "Couldn't initialize SDL: %s\n", SDL_GetError ()); |
67 return(1); | 73 return (1); |
68 } | 74 } |
69 | 75 |
70 signal(SIGSEGV, SIG_DFL); | 76 signal (SIGSEGV, SIG_DFL); |
71 for(i = 0; i < NUMTHREADS; i++) { | 77 for (i = 0; i < NUMTHREADS; i++) { |
72 time_for_threads_to_die[i] = 0; | 78 time_for_threads_to_die[i] = 0; |
73 threads[i] = SDL_CreateThread(ThreadFunc, (void *)(uintptr_t)i); | 79 threads[i] = SDL_CreateThread (ThreadFunc, (void *) (uintptr_t) i); |
74 | |
75 if ( threads[i] == NULL ) { | |
76 fprintf(stderr, | |
77 "Couldn't create thread: %s\n", SDL_GetError()); | |
78 quit(1); | |
79 } | |
80 } | |
81 | 80 |
82 for(i = 0; i < NUMTHREADS; i++) { | 81 if (threads[i] == NULL) { |
83 time_for_threads_to_die[i] = 1; | 82 fprintf (stderr, "Couldn't create thread: %s\n", SDL_GetError ()); |
84 } | 83 quit (1); |
84 } | |
85 } | |
85 | 86 |
86 for(i = 0; i < NUMTHREADS; i++) { | 87 for (i = 0; i < NUMTHREADS; i++) { |
87 SDL_WaitThread(threads[i], NULL); | 88 time_for_threads_to_die[i] = 1; |
88 } | 89 } |
89 SDL_Quit(); | 90 |
90 return(0); | 91 for (i = 0; i < NUMTHREADS; i++) { |
92 SDL_WaitThread (threads[i], NULL); | |
93 } | |
94 SDL_Quit (); | |
95 return (0); | |
91 } | 96 } |