00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00035 #include <stdlib.h>
00036 #include <stdio.h>
00037 #include <pthread.h>
00038 #include <time.h>
00039
00040 #include "fastqueue.h"
00041
00042 #define error_check(status,string) \
00043 if (status==-1) perror(string);
00044
00045 #define MAXELEMENTS 10000
00046
00047
00048 pthread_t producer_thread,
00049 consumer_thread;
00050
00051 float queuetime, porttime;
00052
00053
00055 queue_t *consumer_cmdq;
00056 struct timespec ts_start,ts_end;
00057 int status;
00058
00059 void *producertask(void * argp)
00060 {
00061 long i;
00062 fprintf(stderr,"QUEUETEST started. Please wait.\n");
00063 clock_gettime(CLOCK_REALTIME,&ts_start);
00064 for (i=1; i<=MAXELEMENTS; i++)
00065 enqueue_element_signal(consumer_cmdq, (void *) i);
00066
00067 return NULL;
00068 }
00069
00070 void *consumertask(void * argp)
00071 {
00072 long j;
00074 while ((j= (int) dequeue_element_wait(consumer_cmdq))<MAXELEMENTS);
00075
00076 clock_gettime(CLOCK_REALTIME,&ts_end);
00077 queuetime= ts_end.tv_sec-ts_start.tv_sec +
00078 (ts_end.tv_nsec-ts_start.tv_nsec)*1E-9;
00079 fprintf(stderr,"QUEUETEST stopped (%d elements): %gs\n",MAXELEMENTS,queuetime);
00080 return NULL;
00081 }
00082
00083
00084