Exemplo n.º 1
0
BOOL winpr_SetThreadpoolThreadMinimum(PTP_POOL ptpp, DWORD cthrdMic)
{
	HANDLE thread;
#ifdef _WIN32
	InitOnceExecuteOnce(&init_once_module, init_module, NULL, NULL);
	if (pSetThreadpoolThreadMinimum)
		return pSetThreadpoolThreadMinimum(ptpp, cthrdMic);
#endif
	ptpp->Minimum = cthrdMic;

	while (ArrayList_Count(ptpp->Threads) < ptpp->Minimum)
	{
		if (!(thread = CreateThread(NULL, 0,
				(LPTHREAD_START_ROUTINE) thread_pool_work_func,
				(void*) ptpp, 0, NULL)))
		{
			return FALSE;
		}

		if (ArrayList_Add(ptpp->Threads, thread) < 0)
			return FALSE;
	}

	return TRUE;
}
Exemplo n.º 2
0
Arquivo: pool.c Projeto: cgull/FreeRDP
BOOL SetThreadpoolThreadMinimum(PTP_POOL ptpp, DWORD cthrdMic)
{
#ifdef _WIN32
    module_init();

    if (pSetThreadpoolThreadMinimum)
        return pSetThreadpoolThreadMinimum(ptpp, cthrdMic);
#else
    HANDLE thread;

    ptpp->Minimum = cthrdMic;

    while (ArrayList_Count(ptpp->Threads) < ptpp->Minimum)
    {
        if (!(thread = CreateThread(NULL, 0,
                                    (LPTHREAD_START_ROUTINE) thread_pool_work_func,
                                    (void*) ptpp, 0, NULL)))
        {
            return FALSE;
        }

        if (ArrayList_Add(ptpp->Threads, thread) < 0)
            return FALSE;
    }
#endif
    return TRUE;
}