test/testhread.c

/* [<][>]
[^][v][top][bottom][index][help] */

FUNCTIONS

This source file includes following functions.
  1. ThreadFunc
  2. killed
  3. main

   1 
   2 /* Simple test of the SDL threading code */
   3 
   4 #include <stdio.h>
   5 #include <stdlib.h>
   6 #include <signal.h>
   7 
   8 #include "SDL.h"
   9 #include "SDL_thread.h"
  10 
  11 static int alive = 0;
  12 
  13 int ThreadFunc(void *data)
     /* [<][>][^][v][top][bottom][index][help] */
  14 {
  15         printf("Started thread %s: My thread id is %u\n",
  16                                 (char *)data, SDL_ThreadID());
  17         while ( alive ) {
  18                 printf("Thread '%s' is alive!\n", (char *)data);
  19                 SDL_Delay(1*1000);
  20         }
  21         printf("Thread '%s' exiting!\n", (char *)data);
  22         return(0);
  23 }
  24 
  25 static void killed(int sig)
     /* [<][>][^][v][top][bottom][index][help] */
  26 {
  27         printf("Killed with SIGTERM, waiting 5 seconds to exit\n");
  28         SDL_Delay(5*1000);
  29         alive = 0;
  30         exit(0);
  31 }
  32 
  33 int main(int argc, char *argv[])
     /* [<][>][^][v][top][bottom][index][help] */
  34 {
  35         SDL_Thread *thread;
  36 
  37         /* Load the SDL library */
  38         if ( SDL_Init(0) < 0 ) {
  39                 fprintf(stderr, "Couldn't initialize SDL: %s\n",SDL_GetError());
  40                 exit(1);
  41         }
  42         atexit(SDL_Quit);
  43 
  44         alive = 1;
  45         thread = SDL_CreateThread(ThreadFunc, "#1");
  46         if ( thread == NULL ) {
  47                 fprintf(stderr, "Couldn't create thread: %s\n", SDL_GetError());
  48                 exit(1);
  49         }
  50         SDL_Delay(5*1000);
  51         printf("Waiting for thread #1\n");
  52         alive = 0;
  53         SDL_WaitThread(thread, NULL);
  54 
  55         alive = 1;
  56         thread = SDL_CreateThread(ThreadFunc, "#2");
  57         if ( thread == NULL ) {
  58                 fprintf(stderr, "Couldn't create thread: %s\n", SDL_GetError());
  59                 exit(1);
  60         }
  61         SDL_Delay(5*1000);
  62         printf("Killing thread #2\n");
  63         SDL_KillThread(thread);
  64 
  65         alive = 1;
  66         signal(SIGTERM, killed);
  67         thread = SDL_CreateThread(ThreadFunc, "#3");
  68         if ( thread == NULL ) {
  69                 fprintf(stderr, "Couldn't create thread: %s\n", SDL_GetError());
  70                 exit(1);
  71         }
  72         raise(SIGTERM);
  73 
  74         return(0);      /* Never reached */
  75 }

/* [<][>][^][v][top][bottom][index][help] */