testhread.c
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:2k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

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