Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > Синхронизация при помощи крит. секции


Автор: MacTep 3.6.2005, 08:41
Как сделать синхронизацию двух потоков при помощи критической секции??? Помогите, smile

Автор: Snowy 3.6.2005, 09:17
Вот пример из Рихтера. Сделай по аналогии.
Код

const int MAX_TIMES = 1000;
int g_nIndex = 0;
DWORD g_dwTimes[MAX_TIMES];
CRITICAL_SECTION g_cs;

DWORD WINAPI FirstThread(PVOID pvParam)
{
    for (BOOL fContinue = TRUE; fContinue; ) {
        EnterCriticalSection(&g_cs);

        if (g_nIndex < MAX_TIMES) {
            g_dwTimes[g_nIndex] = GetTickCount();
            g_nIndex++;
        } else
            fContinue = FALSE;

        LeaveCriticalSection(&g_cs);
    }
    return(0);
}

DWORD WINAPI SecondThread(PVOID pvParam)
{
    for (BOOL fContinue = TRUE; fContinue; ) {
        EnterCriticalSection(&g_cs);

        if (g_nIndex < MAX_TIMES) {
            g_nIndex++;
            g_dwTimes[g_nIndex - 1] = GetTickCount();
        } else
            fContinue = FALSE;

        LeaveCriticalSection(&g_cs);
    }
    return(0);
}

Добавлено @ 09:18
А лучше скачай книгу Рихтера и почитай про синхронизацию.
Будет и понятней и сильно поумнеешь в WinAPI.

Автор: MacTep 3.6.2005, 10:57
Цитата(Snowy @ 3.6.2005, 09:17)
Рихтера
почитаю!!!

Автор: Петрович 4.6.2005, 01:07
Ну и как всегда smile, рекомендую: http://mbo88.narod.ru/ToC.html

Автор: MacTep 5.6.2005, 22:35
Нашел Рихтера! Книга великолепная! smile Читаю пока... А статью, кот. посоветовал Петрович, уже несколько раз читал! smile Часто советуют. Но она действительно этого заслуживает!

Автор: Q 6.6.2005, 21:05
MacTep

Можешь дать ссылку на книгу?

Автор: Snowy 7.6.2005, 09:11
http://www.yandex.ru/yandsearch?rpt=rad&text=chm+%C4%E6%E5%F4%F4%F0%E8+%D0%C8%D5%D2%C5%D0+%D1%EE%E7%E4%E0%ED%E8%E5+%FD%F4%F4%E5%EA%F2%E8%E2%ED%FB%F5+WIN32-%EF%F0%E8%EB%EE%E6%E5%ED%E8%E9++%F1+%F3%F7%E5%F2%EE%EC+%F1%EF%E5%F6%E8%F4%E8%EA%E8+64-%F0%E0%E7%F0%FF%E4%ED%EE%E9+%E2%E5%F0%F1%E8%E8+Windows

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)