コード例 #1
0
ファイル: app.c プロジェクト: binhfile/stm32
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) {}
}
コード例 #2
0
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;
}