int main(void) { OS_ERR err; int i; HAL_Init(); /* See Note 1. */ Mem_Init(); /* Initialize Memory Managment Module */ Math_Init(); /* Initialize Mathematical Module */ BSP_IntDisAll(); /* Disable all Interrupts. */ App_OS_SetAllHooks(); OSInit(&err); /* Init uC/OS-III. */ for(i = 0; i < APP_THREAD_COUNT-1; i++) sem_init(&g_thread_startup[i], 0, 0); sem_init(&g_sem_debug, 0, 1); g_debug_tx_buffer = mq_open(0, 512); pthread_attr_setstacksize(&g_thread_attr[0], 1024*2); pthread_create(&g_thread[0], &g_thread_attr[0], Thread_Startup, 0); pthread_setschedprio(&g_thread[0], 1); DEFINE_THREAD(Thread_DebugTX, 1024, 1); DEFINE_THREAD(Thread_DebugRx, 1024, 1); DEFINE_THREAD(Thread_RFIntr, 1024, 3); DEFINE_THREAD(Thread_MiwiTask,1024*5, 4); OSStart(&err); /* Start multitasking (i.e. give control to uC/OS-III). */ while (1) {} }
int CMyThreadPool::Initialize(const int pool_size,const int queue_size) { int ret=-1; if(pool_size<1 || queue_size <1) { std::cerr<<"pool_size<1 or queue_size <1"<<std::endl; return -1; } m_nPoolSize=pool_size; m_nQueueSize=queue_size; m_statePool=TPS_STARTED; int ok_thread_count=0; for(unsigned int i=0;i<m_nPoolSize;++i) { DEFINE_THREAD(oneThread); BEGIN_THREAD(oneThread,MyThreadFunc,this); if(FAILED_THREAD(oneThread)) { std::cerr<<"create thread failed()!"<<oneThread<<std::endl; } else { ok_thread_count++; m_threads.push_back(oneThread); } } return ok_thread_count-m_nPoolSize; }