Форум программистов, компьютерный форум CyberForum.ru

не решается задача по параллельному программированию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Одномерные массивы(функции) http://www.cyberforum.ru/cpp-beginners/thread962543.html
Даны 3 одномерных массива разной длины. Какие массивы после перестановки первого и последнего элементов станут отсортированными по убыванию. Нужно решить при помощи функций.
C++ Нахождение минимума/максимума в конкретной строке или столбце Ребят, подскажите пожалуйста, я забыл как находить минимальный/максимальный элемент в конкретной строке/столбце. Подправьте код, а то программка находит максимальный во всем массиве, а мне надо например в 4 строке найти его. #include <iostream> using namespace std; const int S = 5; const int C = 4; int main() { system("chcp 1251 > nul"); int mas; int max, min; http://www.cyberforum.ru/cpp-beginners/thread962540.html
C++ Есть ли возможность выполнять цикл некоторое время
Существует ли в С++ возможность выполнять цикл,скажем,ровно 15 секунд,или таковой возможности нету? Варианты вроде while (clock()-t1<(CLOCKS_PER_SEC*15)) Не предлагать :-)
Ленточный разреженный массив С++ C++
Нужно заполнить матрицу так, чтобы числами были заполнены главная диагональ, и хотя бы 2 параллельные ей( сверху и снизу), а все остальные элементы 0. Диагональ заполнить не проблема, а вот параллельную ей сверху и снизу... Прошу помощи :)
C++ Структура в стеке. Не работает ф-ия renumber http://www.cyberforum.ru/cpp-beginners/thread962511.html
Моя задача Создать стек для сохранения строк файла. ** С помощью стандартного ввода / вывода (stdio.h) считать текстовый файл по строкам (как в части 1) и записать его содержание в стек. * К каждой записи (рядка!) в стеке добавить в начале строки номер этой строки. Например, чтобы выглядело так: 1: первая строка 2: вторая строка ** Вывести содержимое стека на экран и одновременно...
C++ Вывести на экран числа в виде следующей таблицы Ребятки помогите с решением задачки что полегче решилось сразу,а тут совсем без идей( Вывести на экран числа в виде следующей таблицы 8 7 7 7 6 6 6 6 6 5 5 5 подробнее

Показать сообщение отдельно
liloracle
1 / 1 / 0
Регистрация: 23.04.2013
Сообщений: 11
26.09.2013, 18:21     не решается задача по параллельному программированию
Всех приветствую.
Третью неделю пытаюсь сделать лабу. Не получается решить задачу о спящем парикмахере...
Собственно кто может ПОМОЧЬ допилить лабу?
Потоки работают не правильно судя по выводу.
Не очень понимаю как отлаживать такие приложения, потоки прыгают не уловить сути.


Код прикладываю, разумеется.
Буду очень благодарен.

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
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
 
#define CHAIRS 5
using namespace std;
int customers = 0;
int waiting = 0;
int barbers = 0;
 
HANDLE mutex;
HANDLE customerSemaphore;
HANDLE barberSemaphore;
 
//DWORD WINAPI customer(LPVOID);
//DWORD WINAPI barber(LPVOID);
 
DWORD WINAPI sleepstringka = rand()%200+250;
DWORD WINAPI sleepcustomer = rand()%2000+2500;
 
int const NUMBER_OF_CUSTOMERS = 20;
 
DWORD WINAPI barber(LPVOID)
{
    while (true)
    {
    if (waiting == 0)
    {
        cout << "\n Брадобрей решил поспать " << endl;
        WaitForSingleObject(customerSemaphore, INFINITE);
    }
    else
    {
        WaitForSingleObject(mutex, INFINITE);
        waiting--;
        ReleaseSemaphore(mutex,1,NULL);
        ReleaseSemaphore(barberSemaphore, 1, NULL);
        cout<< "\n Брадобрей стрижёт"<<endl;
        Sleep(sleepstringka);
    }
    }
}
 
DWORD WINAPI customer(LPVOID)
{
    WaitForSingleObject(mutex, INFINITE);
    if (waiting < CHAIRS)
    {
        Sleep(sleepcustomer);
        cout<<"\n Клиент занимает очередь"<<endl;
        waiting++;
        customers++;
        ReleaseSemaphore(customerSemaphore,1,NULL);
        ReleaseSemaphore(mutex,1,NULL);
        WaitForSingleObject(barberSemaphore, INFINITE);
    }
    else
    {
        Sleep(sleepcustomer);
        ReleaseSemaphore(mutex,1,NULL);
        cout<<"\n Клиент ушёл нестриженный"<<endl;
        ReleaseSemaphore(mutex,1,NULL);
    }
    Sleep(sleepcustomer);
    return 0;
}
 
void main()
{
    setlocale(LC_CTYPE, ".1251");  
    setlocale(LC_MONETARY, ".1251");
    mutex = CreateSemaphore(NULL, 1, 1, NULL);
    customerSemaphore = CreateSemaphore(NULL, 0,1,NULL);
    barberSemaphore = CreateSemaphore(NULL, 0,1, NULL);
    int f;
    HANDLE threadCus[NUMBER_OF_CUSTOMERS];
    HANDLE threadBar;
    DWORD cusThreadId;
    DWORD barThreadId;
    threadBar = CreateThread(NULL, 0, barber, (LPVOID)1,0,&barThreadId);
    for (int i = 0; i < NUMBER_OF_CUSTOMERS; ++i)
    {
        threadCus[i] = CreateThread(NULL,0,customer,(LPVOID)i,0, &cusThreadId);
    }
    
 
    cin >> f;
}
Добавлено через 45 секунд
80 просмотров, ни одного ответа.
Ребят никто не знает как дорешать или не видит ошибку??
Или всем лениво?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru