Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Получить сигнал с СОМ-порта https://www.cyberforum.ru/ cpp/ thread369103.html
Здравствуйте.Собсно поставлена такая задача - получить по COM-порту код,преобразовать в число и вывести на экран.Тоесть например идет набор единичек "1111" - получаем ,выводим "15".Препод усиленно...
Помогите решить ошибку C++
#include <iostream.h> #include <math.h> #include <windows.h> char buf ; char *rus(char *s) {CharToOem(s,buf); return buf;} void main () { cout << ( " programma dl9 vi4esleni9 sostavnoe...
C++ помогите взломать гиппертест
вот этот гиппертест.срочно нужно.
C++ вопрос по libssh Подскажите пажалста, если кто сталкивался с библиотекой libssh. Допустим через эту либину я пересылаю архив на некое устройство линуксовое. Запускаю разархивирование. теперь вопрос: как я могу... https://www.cyberforum.ru/ cpp/ thread367636.html
C++ Помогите с задачей плиз https://www.cyberforum.ru/ cpp/ thread364492.html
очень нужно...Дана последовательность из n целых элемнтов. Удалить из нее первое и последнее вхождение минимального элемента, затем отсортировать ее по убыванию. Вывести на экран последовательность...
Вычислите P C++
Народ, помогите, пожалуйста с задачей.. после завтра сдавать,а я не успеваю. Заранее спс.. Вычислите P = 1 . 2 + 2 . 3 . 4 + 3 . 4 . 5 . 6 + ...+ N . (N+1) . ... . 2N. Я не понимаю как решить...
[Задача] Объясните результат исполнения программы C++
// Файл t1.cc #include <iostream> class C { int x; public: C() { x = 10; } int get() { return x; }
C++ помогите плиз написать программу, которая будет парсить XML по заданным условиям Пользователь запускает программу, получает диалог вида "Path to XML: " задает путь до файла, "Print files, 1. Video 2. Audio" пользователь нажимает нужную цифру и Enter " Stream Size "... https://www.cyberforum.ru/ cpp/ thread363924.html
C++ DLL https://www.cyberforum.ru/ cpp/ thread363803.html
Подкиньте какую нибудь инфу про DLL. Как создавать, подключать и тд. Заранее спс.
C++ Быстрая прорисовка виртуального окна в реальном времени Описание задачи: Есть приложение работающее в реальном времени и требующее обновление области экрана "попиксельно" со скоростью не хуже чем 24 раза в секунду. Область экрана имеет размеры 1024... https://www.cyberforum.ru/ cpp/ thread363498.html
2 / 2 / 0
Регистрация: 05.10.2010
Сообщений: 37
0

Задача обедающих философов при помощи событий (events)

23.10.2011, 20:08. Просмотров 1350. Ответов 0
Метки (Все метки)

Здравствуйте. Очень нужна помощь с сабжем. Самостоятельно ничего не вышло - не пойму как это вообще выглядеть должно. Посему, кому не трудно, поделитесь кодом.

Добавлено через 23 часа 43 минуты
Ну пожалуйста

Добавлено через 6 часов 36 минут
Попытался реализовать так, как понимаю. Ошибок нет, но работает как-то... не так.
Помогите исправить недокод, пожалуйста.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include "stdafx.h" 
#include <windows.h> 
#include <stdio.h> 
#include <iostream.h> 
#include <conio.h> 
 
HANDLE hThr1, hThr2, hThr3, hThr4, hThr5; 
HANDLE hEvent1, hEvent2, hEvent3, hEvent4, hEvent5; 
unsigned long uThrID1,uThrID2, uThrID3, uThrID4, uThrID5; 
 
void phil1(void* pParams) 
{ 
    WaitForSingleObject (hEvent1, INFINITE); 
    ResetEvent(hEvent1); 
    if (WaitForSingleObject(hEvent2, 20)==WAIT_OBJECT_0) 
    { 
        ResetEvent(hEvent2); 
        cout << "phil1" <<endl; 
        getch(); 
        SetEvent(hEvent2); 
        SetEvent(hEvent1); 
        Sleep(5000); 
    } 
    else SetEvent(hEvent1); 
} 
 
void phil2(void* pParams) 
{ 
    WaitForSingleObject (hEvent2, INFINITE); 
    ResetEvent(hEvent2); 
    if (WaitForSingleObject(hEvent3, 20)==WAIT_OBJECT_0) 
    { 
        ResetEvent(hEvent3); 
        cout << "phil2" <<endl; 
        getch(); 
        SetEvent(hEvent3); 
        SetEvent(hEvent2); 
        Sleep(5000); 
    } 
    else SetEvent(hEvent2); 
} 
 
void phil3(void* pParams) 
{ 
    WaitForSingleObject (hEvent3, INFINITE); 
    ResetEvent(hEvent3); 
    if (WaitForSingleObject(hEvent4, 20)==WAIT_OBJECT_0) 
    { 
        ResetEvent(hEvent4); 
        cout << "phil3" <<endl; 
        getch(); 
        SetEvent(hEvent4); 
        SetEvent(hEvent3); 
        Sleep(5000); 
    } 
    else SetEvent(hEvent3); 
} 
 
void phil4(void* pParams) 
{ 
    WaitForSingleObject (hEvent4, INFINITE); 
    ResetEvent(hEvent4); 
    if (WaitForSingleObject(hEvent5, 20)==WAIT_OBJECT_0) 
    { 
        ResetEvent(hEvent5); 
        cout << "phil4" <<endl; 
        getch(); 
        SetEvent(hEvent5); 
        SetEvent(hEvent4); 
        Sleep(5000); 
    } 
    else SetEvent(hEvent4); 
} 
 
void phil5(void* pParams) 
{ 
    WaitForSingleObject (hEvent5, INFINITE); 
    ResetEvent(hEvent5); 
    if (WaitForSingleObject(hEvent1, 20)==WAIT_OBJECT_0) 
    { 
        ResetEvent(hEvent1); 
        cout << "phil5" <<endl; 
        getch(); 
        SetEvent(hEvent1); 
        SetEvent(hEvent5); 
        Sleep(5000); 
    } 
    else SetEvent(hEvent5); 
} 
 
int main() 
{ 
    hEvent1 = CreateEvent (NULL, FALSE, TRUE, NULL); 
    hEvent2 = CreateEvent (NULL, FALSE, TRUE, NULL); 
    hEvent3 = CreateEvent (NULL, FALSE, TRUE, NULL); 
    hEvent4 = CreateEvent (NULL, FALSE, TRUE, NULL); 
    hEvent5 = CreateEvent (NULL, FALSE, TRUE, NULL); 
      
    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; 
}


Вернуться к обсуждению:
Задача обедающих философов при помощи событий (events)
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2011, 20:08
Готовые ответы и решения:

Реальзация задачи обедающих философов с помощью событий
помогите написать реальзацию задачи обедающих философов с помощью событий. не могу понять сколько...

Потоки. Event. Задача про обедающих философов.
Здравствуйте, товарищи. Возник вопрос непонимания, по которому не удалось продолбиться с помощью...

задача про обедающих философов
Здравствуйте! Делаю программу про обедающих философов. ...

Эмуляция обедающих философов
Доброго времени суток, уважаемые форумчане! Необходима помощь в доработке одной программы... ...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.