Exemplo n.º 1
0
void SimpleMutex(int numThreads, int lockon)
{
	int i,j;
	HThread t[1000];
	int status[1000];
	char name[100];
	HPriority prio;

	if (numThreads <1) numThreads=1;
	if (numThreads>1000) {
		printf("too many threads\n"); exit(1);
	}
	t2_lockon = lockon;
	printf(" creating %d threads\n",numThreads); fflush(stdout);
	t2_lock = HCreateLock("t2_lock");
	t2_inc = (float)1.0 / numThreads;
	for (i=0; i<numThreads; i++){
		j = i+1;
		sprintf(name,"thread%d",j);
		prio = i%3;
		t[i] = HCreateThread(name,10,prio,test2,(void *)prio);
		printf("   %d created\n",j);
	}
	printf(" waiting for termination\n");
	for (i=0; i<numThreads; i++)
		HJoinThread(t[i],&status[i]);
	printf("Final sum = %f (should be 1)\n",t2_sum);
}
Exemplo n.º 2
0
void ParallelForkAndJoin(int numThreads,int delay)
{
	int i,j;
	HThread t[1000];
	int status[1000];
	char name[100];

	if (numThreads <1) numThreads=1;
	if (numThreads>1000) {
		printf("too many threads\n"); exit(1);
	}
	if (delay<0) delay = 0; test1_delay = delay;
	printf(" creating %d threads\n",numThreads); fflush(stdout);
	for (i=0; i<numThreads; i++){
		j = i+1;
		sprintf(name,"thread%d",j);
		t[i] = HCreateThread(name,10,HPRIO_NORM,test1,(void *)j);
		printf("   %d created\n",j);
	}
	printf(" waiting for termination\n");
	for (i=0; i<numThreads; i++){
		HJoinThread(t[i],&status[i]);
		printf("   %d terminated with status %d\n",i+1,status[i]);
		fflush(stdout);
	}
}
Exemplo n.º 3
0
void BufferTest(int nChars,int bSize,int pDelay,int cDelay,char *pcPrioStr)
{
	HPriority pp,cp;
	int n = nChars;
	int pstat,cstat;

	printf("Starting Buffer Test\n\n");
	lock = HCreateLock("Buffer");
	notfull =  HCreateSignal("NotFull");
	notempty = HCreateSignal("NotEmpty");
	inx = 0; outx=0; used=0; bsize = bSize;
	pp = getpr(pcPrioStr[0]);
	cp = getpr(pcPrioStr[1]);
	pdel = pDelay; cdel = cDelay;
	prod_th = HCreateThread("Producer",10, pp, producer, (void *)n);
	cons_th = HCreateThread("Consumer",10, cp, consumer, (void *)n);
	HJoinThread(prod_th,&pstat);
	HJoinThread(cons_th,&cstat);
	printf("\n\nProducer terminated[%d chars sent]\n",pstat);
	printf("Consumer terminated[%d chars received]\n",cstat);
}
Exemplo n.º 4
0
void SimpleSignal(void)
{
	HThread t;
	int status;

	t3_lock = HCreateLock("t3_lock");
	t3_signal = HCreateSignal("t3_signal");
	t = HCreateThread("t3wait",10,HPRIO_NORM,test3,(void *)0);
	printf(" press key to send signal\n"); getchar();
	HSendSignal(t3_signal);
	HJoinThread(t,&status);
}
int cTumkwsaSink::setupATK()
{
  try {

  // ------- load HTK config......
  int argc=3;
  const char* argv[3] = {"ASR","-C",NULL};
  if (configfile != NULL)
    argv[2]=configfile;
  else
    argv[2]="asr.cfg";

  if (InitHTK(argc,(char**)argv,version,TRUE)<SUCCESS){
    COMP_ERR("failed to initialise ASR subsystem!");
  }

  ConfParam *cParm[MAXGLOBS];       /* config parameters */
  int numParm,i;
  char ngramFN[100],buf[100];
  ngramFN[0] = '\0';

  // Read configuration parms for ANGRAM to see if NGram used
  numParm = GetConfig((char *)"ANGRAM", TRUE, cParm, MAXGLOBS);
  if (numParm>0){
    if (GetConfStr(cParm,numParm,(char *)"NGRAMFILE",buf)) strcpy(ngramFN,buf);
  }

  // Create Buffers
  feChan = new ABuffer("feChan");
  ansChan = new ABuffer("ansChan");

  // create a resource manager
  rman = new ARMan();

  arec = new ARec("ARec",feChan,ansChan,rman,0);

  // create global resources
  hset = new AHmms("HmmSet"); // load info in config
  dict = new ADict("ADict");
  gram = new AGram("AGram");
  rman->StoreHMMs(hset);
  rman->StoreDict(dict);
  rman->StoreGram(gram);

  ResourceGroup *main = rman->NewGroup("main");
  main->AddHMMs(hset);
  main->AddDict(dict);
  main->AddGram(gram);

  if (strlen(ngramFN)>0){
    ANGram * ngram  = new ANGram("ANGram");
    rman->StoreNGram(ngram);
    main->AddNGram(ngram);
  }

  arec->Start();
  arec->SendMessage("usegrp(main)");
  arec->SendMessage("start()");

  terminated = FALSE;

  }
  catch (ATK_Error e){ ReportErrors((char*)"ATK",e.i); return 0;}
  catch (HTK_Error e){ ReportErrors((char*)"HTK",e.i); return 0;}

  HThread t = HCreateThread("resultThread", 0, HPRIO_NORM, ATKresultThreadRunner, this);
  ATKresThread = t->thread;
  //smileThreadCreate( ATKresThread, ATKresultThreadRunner, this );

  atkIsSetup=1;
  
  return 1;
}