home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Exec 3 / CD_Magazyn_EXEC_nr_3.iso / Programy / Biblioteki / ppclibemu07.lha / tests / threadtest.c < prev    next >
C/C++ Source or Header  |  1999-12-10  |  1KB  |  62 lines

  1. #include <stdio.h>
  2. #include <exec/types.h>
  3. #include <dos/dos.h>
  4. #include <utility/tagitem.h>
  5. #include <powerup/ppclib/tasks.h>
  6.  
  7. extern void *PPCCreatePort(struct TagItem *);
  8. extern void PPCDeletePort(void *);
  9. extern void *PPCCreateMessage(void *,ULONG);
  10. extern void PPCDeleteMessage(void *);
  11. extern void *PPCGetMessage(void *);
  12. extern void PPCWaitPort(void *);
  13. extern void *PPCCreateTask(void *,void *,struct TagItem *);
  14.  
  15.  
  16. static int threadfunc()
  17. {
  18.   int i;
  19.   
  20.   for (i=1; i<=10; i++)
  21.     printf("threadfunc: %d\n",i);
  22.   return 1;
  23. }
  24.  
  25.  
  26. main()
  27. {
  28.   struct TagItem ti[4];
  29.   void *replyport,*startupmsg,*msg;
  30.  
  31.   ti[0].ti_Tag = TAG_DONE;
  32.   if (replyport = PPCCreatePort(ti)) {
  33.     if (startupmsg = PPCCreateMessage(replyport,0)) {
  34.       ti[0].ti_Tag = PPCTASKTAG_STARTUP_MSG;
  35.       ti[0].ti_Data = (ULONG)startupmsg;
  36.       ti[1].ti_Tag = PPCTASKTAG_MSGPORT;
  37.       ti[1].ti_Data = TRUE;
  38.       ti[2].ti_Tag = TAG_DONE;
  39.       if (PPCCreateTask(NULL,(void *)threadfunc,ti)) {
  40.         printf("Thread started, waiting for finish...\n");
  41.         for (;;) {
  42.           if (PPCGetMessage(replyport) == startupmsg) {
  43.             printf("Thread finished.\n");
  44.             break;
  45.           }
  46.           PPCWaitPort(replyport);
  47.         }
  48.       }
  49.       else
  50.         printf("Couldn't create task!\n");
  51.       PPCDeleteMessage(startupmsg);
  52.     }
  53.     else
  54.       printf("Coudn't create startup message!\n");
  55.     PPCDeletePort(replyport);
  56.   }
  57.   else
  58.     printf("Couldn't create message port!\n");
  59.  
  60.   exit(0);
  61. }
  62.