示例#1
0
文件: main.cpp 项目: ivanprosh/Petri
void thr_pool_petry()
{
    clock_t st;
    HANDLE thr[100];
    //std::vector<HANDLE> *thr = new std::vector<HANDLE>();
    DWORD i;
    DWORD id[100];

    init_petry ( n );

    st = clock();

    for( i = 0; i < n; i++ )
    {
       thr[i] = CreateThread( NULL, 0, (LPTHREAD_START_ROUTINE) pool_petry_thr, (void*) i, NULL, &id[i] );
    }

    // Ждем, пока все завершится (поле time везде установится в 0 в конце)
    move_petry( finish_move );

    t_time = clock() - st;

    printf( "APC Petry time: %d\n", t_time );

    // Сложить результаты измерений
    ShowRes();

    close_thr(thr,id);
} // */
示例#2
0
文件: main.cpp 项目: ivanprosh/Petri
void petry_process ()
{
    clock_t st;
    HANDLE thr[100];
    DWORD i;
    DWORD id[100];

    st = clock();
    weight = 0;
    petry_in[3][2] = n;

    for(  i = 0; i < m; i++ )
    {
        thr[i] = CreateThread( NULL, 0,
            (LPTHREAD_START_ROUTINE) proc_petry,
            (LPDWORD) i, 0, &id[i] );
    }

    move_petry( finish_move + 1 );

    t_time = clock() - st;

    printf( "Petry time: %d\n", t_time );

    ShowRes();

    close_thr(thr,id);
}
示例#3
0
文件: main.cpp 项目: ivanprosh/Petri
void thr_apc()
{
    clock_t st;
    HANDLE h;
    std::vector<HANDLE> *thr = new std::vector<HANDLE>();
    DWORD i;

    st = clock();
    weight = 0;

    // Создаем спящие цепочки
    for(  i = 0; i < m; i++ )
    {
        h = CreateThread( NULL, 0,
            (LPTHREAD_START_ROUTINE) proc_apc,
            (LPDWORD) i, 0, NULL );

        thr->push_back( h );
    }

    // Запускаем в каждой из них APC
    for( i = 0; i < m; i++ )
    {
        h = thr->at( i  );

        QueueUserAPC( (PAPCFUNC) proc_thr, h, (ULONG_PTR) i );
    }

    int t;

    // Ждем, пока все завершится
    while (last_free < n)
        Sleep(20);

    // Оповещаем основные цепочки о завершении
    done = true;

    t_time = clock () - st;

    printf( "APC time %d\n", t_time );

    ShowRes();
}
示例#4
0
文件: main.cpp 项目: ivanprosh/Petri
// Линейно обработать
void linear_process()
{
    clock_t st, en;

    st = clock();

    weight = 0;
    for( int i = 0; i < n; i++ )
        Obrabotat( &data[i] );

    en = clock();

    l_time = en-st;

    printf( "Linear time: %d\n", l_time );
    printf( "  Weight: %d\n", weight );

    ShowRes();
}
示例#5
0
void CDlgSpeedTest::Sort()
{
	CMap<DWORD,DWORD,SpeedTestResult,SpeedTestResult> mapTmp;
	CArray<SpeedTestResult,SpeedTestResult> ayTmp;
	for (int i=0; i<m_ayTestResult.GetCount(); i++)
	{
		SpeedTestResult res = m_ayTestResult.GetAt(i);
		if (!res.m_bError)
		{
			mapTmp.SetAt(res.m_result,res);
		}
		else
			ayTmp.Add(res);
	}
	m_ayTestResult.RemoveAll();
	POSITION pos = mapTmp.GetStartPosition();
	DWORD key;
	SpeedTestResult val;
	while (pos)
	{
		mapTmp.GetNextAssoc(pos,key,val);
		m_ayTestResult.Add(val);
	}
	for (int j=0; j<ayTmp.GetCount(); j++)
	{
		m_ayTestResult.Add(ayTmp.GetAt(j));
	}

	for(int i=0; i<m_cList.GetItemCount(); i++)
	{
		CString str;
		str = m_cList.GetItemText(i,0);
		if (FindRes(str))
		{
			m_cList.DeleteItem(i);
			i--;
		}
	}
	ShowRes();
}
示例#6
0
文件: main.cpp 项目: ivanprosh/Petri
// Запустить несколько простых цепочек
void thr_process()
{
    clock_t st;
    HANDLE thr[100];
    DWORD i;

    st = clock();
    weight = 0;

    for(  i = 0; i < m; i++ )
    {
        thr[i] = CreateThread( NULL, 0,
            (LPTHREAD_START_ROUTINE) proc_thr,
            (LPDWORD) i, 0, NULL );
    }

    WaitForMultipleObjects( m, &thr[0], TRUE, INFINITE );

    t_time = clock() - st;
    printf( "Multithreaded time: %d\n", t_time );

    ShowRes();
}