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

Consumer-Producer на семафорах - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ DevC++ круговая диаграмма http://www.cyberforum.ru/cpp-beginners/thread870675.html
Помогите кто может плз , нужно написать программу в Dev C++ которая рисует круговую диаграмму,из чисел заданых пользователем . Добавлено через 16 минут
C++ Требуется реализовать алгоритм, используя объекты класса «String» (вывести слова, в которых буквы упорядочены по алфавиту) Вывести слова, в которых нет повторяющихся букв. Вывести слова, в которых буквы упорядочены по алфавиту В среде C++ заранее хочу по благодарить Вас http://www.cyberforum.ru/cpp-beginners/thread870673.html
C++ выделение подмножества и нахождение изолированных вершин
Ребят помогите решить такую задачу : 1) выделения подмножества несмежных вершин 2)Нахождение изолированный вершин в заданном графе. Число вершин графа n<15
C++ Создание класса CPerson
Всем доброго времени суток! Сейчас делаю программу (по универу) для отдела кадров, суть в том, что полей у класса выходит около 40.. стоит ли писать такой класс или может разбить его на небольшие классы, например Доходы, Личная информация и т.д. и всё это загнать в CPerson? заранее спасибо
C++ Игра "Жизнь" http://www.cyberforum.ru/cpp-beginners/thread870644.html
#include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <windows.h> #include <WinCon.h> #include <conio.h> #include <time.h> #define SIZE 20
C++ Создать 2 объекта a и b, разработанного класса – символьная строка, реализовать перегрузку операции >= Нужно написать прогу, сам пытался но не смог. (желательно с обьяснением) Заранее спасибо! Создать 2 объекта a и b, разработанного класса – символьная строка, реализовать перегрузку операции >= ( c = a>=b, с получает содержимое большей строки, объекты (их компоненты - строки) сравнивать по содержимому). подробнее

Показать сообщение отдельно
zewer
 Аватар для zewer
1022 / 713 / 72
Регистрация: 07.01.2011
Сообщений: 5,372
19.05.2013, 18:56     Consumer-Producer на семафорах
Всем добрый день. Есть программа
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
#include <windows.h>
#include <stdio.h>
#include "iostream"
using namespace std;
int Sklad = 0;
HANDLE ghSemaphore;
HANDLE c1, c2, p1, p2, p3;
unsigned long cid1, cid2, pid1, pid2, pid3;
 
void Thread_Consumer() // Клиент
{ 
    while (1)
    {
        WaitForSingleObject(ghSemaphore,INFINITE);
        while (Sklad < 1) //привязка к переменной
        {
            printf("%d Покупець очiкує\n",GetCurrentThreadId());
            Sleep(1);
        }
        Sklad--;
        printf("Зараз склад має: %d\n\n", Sklad);
        Sleep(1000);
        ReleaseSemaphore(ghSemaphore, 1,  NULL);
    }
}
void Thread_Producer() //Поставщик
{
    while (1)
    {
        WaitForSingleObject(ghSemaphore,INFINITE);
        while (Sklad > 5) // привязка к переменной
        {
            printf("%d Постачальник %d очiкує\n",GetCurrentThreadId());
            Sleep (1);
        }
        Sklad++;
        printf("Зараз склад має: %d\n\n", Sklad);
        Sleep(1000);
        ReleaseSemaphore(ghSemaphore, 1,  NULL);
    }   
}
int main( void )
{ 
    setlocale (LC_ALL, "Ukrainian");
    ghSemaphore = CreateSemaphore( NULL, 2, 5, NULL);
    c1 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Thread_Consumer, NULL, 0, &cid1);
    c2 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Thread_Consumer, NULL, 0, &cid2);
    p1 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Thread_Producer, NULL, 0, &pid1);
    p2 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Thread_Producer, NULL, 0, &pid2);
    p3 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)Thread_Producer, NULL, 0, &pid3);
    while(1);
    return 0;
}
Проблема в том, что надо сделать, чтоб была привязка не к переменной склада, а через семафор. А я вот семафор не очень хорошо знаю, что б это реализировать. Как сделать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru