Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2011, 18:32   #1
RAZOR1703
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 74
По умолчанию Обедающие философы с использованием событий (events)

Привет всем. Собственно, сабж. Может, у кого-нибудь завалялся примерчик, или не составит труда помочь с кодом? Буду очень благодарен.
UPD.
Попытался что-то сделать, вышло как-то не очень. Собственно, помогите исправить этот недокод или дайте годный совет. Спасибо.

PHP код:
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <iostream.h>
#include <conio.h>

HANDLE hThr1hThr2hThr3hThr4hThr5;
HANDLE hEvent1hEvent2hEvent3hEvent4hEvent5;
unsigned long uThrID1,uThrID2uThrID3uThrID4uThrID5;

void phil1(voidpParams)
{
    
WaitForSingleObject (hEvent1INFINITE);
    
ResetEvent(hEvent1);
    if (
WaitForSingleObject(hEvent220)==WAIT_OBJECT_0)
    {
        
ResetEvent(hEvent2);
        
cout << "phil1" <<endl;
        
getch();
        
SetEvent(hEvent2);
        
SetEvent(hEvent1);
        
Sleep(5000);
    }
    else 
SetEvent(hEvent1);
}

void phil2(voidpParams)
{
    
WaitForSingleObject (hEvent2INFINITE);
    
ResetEvent(hEvent2);
    if (
WaitForSingleObject(hEvent320)==WAIT_OBJECT_0)
    {
        
ResetEvent(hEvent3);
        
cout << "phil2" <<endl;
        
getch();
        
SetEvent(hEvent3);
        
SetEvent(hEvent2);
        
Sleep(5000);
    }
    else 
SetEvent(hEvent2);
}

void phil3(voidpParams)
{
    
WaitForSingleObject (hEvent3INFINITE);
    
ResetEvent(hEvent3);
    if (
WaitForSingleObject(hEvent420)==WAIT_OBJECT_0)
    {
        
ResetEvent(hEvent4);
        
cout << "phil3" <<endl;
        
getch();
        
SetEvent(hEvent4);
        
SetEvent(hEvent3);
        
Sleep(5000);
    }
    else 
SetEvent(hEvent3);
}

void phil4(voidpParams)
{
    
WaitForSingleObject (hEvent4INFINITE);
    
ResetEvent(hEvent4);
    if (
WaitForSingleObject(hEvent520)==WAIT_OBJECT_0)
    {
        
ResetEvent(hEvent5);
        
cout << "phil4" <<endl;
        
getch();
        
SetEvent(hEvent5);
        
SetEvent(hEvent4);
        
Sleep(5000);
    }
    else 
SetEvent(hEvent4);
}

void phil5(voidpParams)
{
    
WaitForSingleObject (hEvent5INFINITE);
    
ResetEvent(hEvent5);
    if (
WaitForSingleObject(hEvent120)==WAIT_OBJECT_0)
    {
        
ResetEvent(hEvent1);
        
cout << "phil5" <<endl;
        
getch();
        
SetEvent(hEvent1);
        
SetEvent(hEvent5);
        
Sleep(5000);
    }
    else 
SetEvent(hEvent5);
}

int main()
{
    
hEvent1 CreateEvent (NULLFALSETRUENULL);
    
hEvent2 CreateEvent (NULLFALSETRUENULL);
    
hEvent3 CreateEvent (NULLFALSETRUENULL);
    
hEvent4 CreateEvent (NULLFALSETRUENULL);
    
hEvent5 CreateEvent (NULLFALSETRUENULL);
     
    
hThr1 CreateThread (NULL,0,(LPTHREAD_START_ROUTINE)phil1,NULL,0,&uThrID1);
    
hThr2 CreateThread (NULL,0,(LPTHREAD_START_ROUTINE)phil2,NULL,0,&uThrID2);
    
hThr3 CreateThread (NULL,0,(LPTHREAD_START_ROUTINE)phil3,NULL,0,&uThrID3);
    
hThr4 CreateThread (NULL,0,(LPTHREAD_START_ROUTINE)phil4,NULL,0,&uThrID4);
    
hThr5 CreateThread (NULL,0,(LPTHREAD_START_ROUTINE)phil5,NULL,0,&uThrID5);

    return 
0;


Последний раз редактировалось RAZOR1703; 23.10.2011 в 20:05.
RAZOR1703 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очень нужно решение задачи Обедающих философов с использованием событий RAZOR1703 Помощь студентам 0 19.10.2011 00:08
Семафоры, философы. kir_rik Помощь студентам 0 12.04.2010 14:17
Философы, блин... ds.Dante Свободное общение 10 18.11.2009 18:14
Events в ServerSocket и ClientSocket LiFeStyle Работа с сетью в Delphi 3 22.11.2007 22:26