Example #1
0
TQueue::TQueue() {
	if (!tpool_) {
		tpool_ = new TQItemPool(1000);
	}
	sptree_ = new SPTREE;
	spinit(sptree_);
	sptree2_ = new SPTREE;
	spinit(sptree2_);
	least_ = 0;

#if COLLECT_TQueue_STATISTICS
	nmove = ninsert = nrem = nleast = nbal = ncmplxrem = 0;
	nfastmove = ncompare = nleastsrch = nfind = nfindsrch = 0;
	nenq1 = nenq2 = 0;
#endif
}
Example #2
0
void timehandler(int signo, siginfo_t* info, void *context) {
   timer_data *datap;
   static int timesentered = 0;

   timesentered++;
   datap = (timer_data *)(info->si_value.sival_ptr);
   if (timesentered >=  datap->numtimes) {
      datap->exitflag = 1;
      return;
   }
   if (spinit(datap->spintime) == -1) {
      write(STDERR_FILENO, "Spin failed in handler\n", 23);
      datap->exitflag = 1;
   }
   if (datap->type == TYPE_PERIODIC)
      return;
   if (datap->type == TYPE_ABSOLUTE)
      datap->tvalue.it_value =
         add_to_time(datap->tvalue.it_value, datap->inctime);
   if (timer_settime(datap->timid, datap->flags, &datap->tvalue, NULL) == -1) {
      write(STDERR_FILENO, "Could not start timer in handler\n",33);
      datap->exitflag = 1;
   }
}