TEST(MutexTest,IncControl) { Thread *pool[100]; int i,N=100; counter c; init_counter(&c); EXPECT_EQ(c.n,0); for(i=0;i<N;++i) { pool[i] = Thread_Alloc(inc_ctl,(void*)&c); // <50ms>*100 = 5s ASSERT_NE(pool[i],(void*)NULL); } for(i=0;i<N;++i) Thread_Join(pool[i]); for(i=0;i<N;++i) Thread_Free(pool[i]); EXPECT_NE(c.n,N); Mutex_Free(c.lock); }
/** **************************************************** * \fn void TPOS_Init(void) **************************************************** */ void TPOS_Init(void) { Thread *th; uint16_t i; Thread_Current()->next = NULL; EV_Init(&Thread_Current()->wakeEvent,TPos_ThreadWake,Thread_Current()); for(i = 1; i < THREAD_POOL_SIZE; i++) { th = Thread_Alloc(); Thread_Init(th,EV_Loop); th->next = unusedqHead; unusedqHead = th; EV_Init(&th->wakeEvent,TPos_ThreadWake,th); } Mutex_Init(&testRSema); }
int main(int argc,char* argv[]) { Chan *chan; Thread* threads[N]; input_t inputs[N]; stop=0; item=0; chan = Chan_Alloc(16,sizeof(int)); stop=0; { size_t i; ThreadProc procs[N] = { consumer, consumer, consumer, consumer, producer, producer, producer, producer, producer, }; for(i=0;i<N;++i) { inputs[i].id = i; inputs[i].chan = chan; } for(i=0;i<N;++i) { threads[i] = Thread_Alloc(procs[i],(void*)(inputs+i)); usleep(10); } } //usleep(100); Chan_Wait_For_Ref_Count(chan,N+1); stop=1; printf("*** Main: triggered stop ***"ENDL); { int i=0; for(i=0;i<N;++i) Thread_Join(threads[i]); } Chan_Close(chan); printf("Balance: (%d,%d) %s"ENDL,pmax,cmax,(pmax==cmax)?"Ok!":"Mismatch *****"); return 0; }
virtual void SetUp() { pause1_ = Thread_Alloc(pause_100ms,NULL); fortytwo_ = Thread_Alloc(pause_100ms,(void*)42); }