Форум программистов, компьютерный форум, киберфорум
Наши страницы

Ошибки в многопоточном вычислении средствами с++11 - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Неправильно считает http://www.cyberforum.ru/cpp-beginners/thread1307827.html
#include<iostream> #include<clocale> #include<cmath> #include<cstdlib> #include<cstring> using namespace std; double volume(double r1, double r2) { return...
C++ Разница между перегрузкой операторов внешней или внутренней функцией Перегружаю operator* (умножаю экземпляры своего класса между собой). Как лучше перегрузить: MyClass operator*(MyClass a, MyClass b){}или MyClass MyClass::operator* (const MyClass& a){}Страуструп... http://www.cyberforum.ru/cpp-beginners/thread1307808.html
C++ Странности с неразрешёнными файлами include (Kubuntu, NetBeans)
Всем привет. Буквально несколько дней назад я начал осваивать C++. Мне захотелось попробовать из готовых примеров создать демон, который я ранее написал на PHP. Назначение демона - соединение...
C++ Ошибка в программе
Откуда берутся эти числа? Задание (если нужно): Дан одномерный массив из 100 элементов, состоящий из случайных вещественных чисел в диапазоне от -35 до 50. Вывести в порядке не убывания...
C++ Странности с неразрешёнными файлами include (Kubuntu, NetBeans) http://www.cyberforum.ru/cpp-beginners/thread1307796.html
Всем привет. Буквально несколько дней назад я начал осваивать C++. Мне захотелось попробовать из готовых примеров создать демон, который я ранее написал на PHP. Назначение демона - соединение...
C++ Контейнер list Добрый день! Помогите пожалуйста разобраться, никогда раньше не работал с листом. Задача следующая: В числовой последовательности вставить после каждого простого числа удвоенное среднее... подробнее

Показать сообщение отдельно
Satansoft
8 / 8 / 1
Регистрация: 27.02.2012
Сообщений: 725

Ошибки в многопоточном вычислении средствами с++11 - C++

22.11.2014, 18:41. Просмотров 258. Ответов 13
Метки (Все метки)

Задачка:
20 детей едят из одной миски, в которой 100 слив, когда ребенок хочет кушать, он берёт из миски одну сливу, только если миска не пуста, если же пуста - зовёт маму, чтобы та наполнила её (соотвественно 100 слив), создать многопоточное приложение, реализующее задачу.

Есть класс MainWindow, в котором определены 3 метода:

Готовка:
C++
1
2
3
4
5
6
int Cooking_a()
        {
            int food=M;
 
            return food;
        }
Обед:
C++
1
2
3
4
5
6
7
8
9
10
 int Dinner_a(int food)
        {
            std::mutex eating;
            eating.lock();
            cout<< "Child ate";
            food--;
            eating.unlock();
 
            return 0;
        }
Вызов:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int Call_f()
{
std::thread Cannibals[N];
    while(true)
    {
        std::thread cook = std::thread(&MainWindow::Cooking_a, this);
        cook.join();
 
        int food=Cooking_a(); 
 
 
        for(int i=0;i<food;i++)
                {
                   int coven = M;
                   Cannibals[i] = std::thread(&MainWindow::Dinner_a, this, coven);
                   coven --;
                   Cannibals[i].join(); 
                }
}
 
    }
Вызов Call_f() происходит из main. На этапе выполнения программа зависает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru