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

Ошибка при работе с мютексом - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дан файл, содержащий сведения о химических элементах http://www.cyberforum.ru/cpp-beginners/thread811700.html
Помогите создать программу. Дан файл, содержащий сведения о химических элементах: название, символическое обозначение, массу атома, заряд ядра. Вывести сведения о химическом элементе по его символическому названию. Найти элемент с самой большой массой и наименьшим зарядом ядра. Буду благодарен.
C++ Функция sort() Непонятно как работает функция из STL sort(). В нее третьим аргументом можно передавать некую функцию, предикату, которая возвращает логическое значение. Вот только сам смысл от этого какой? Допустим, MinToMax возвратит true, и что дальше? Даже непонятно как в функцию MinToMax сами значения передаются во время работы программы. bool MinToMax(int a, int b) { return a < b; } int main()... http://www.cyberforum.ru/cpp-beginners/thread811680.html
C++ Программа диагностики рентабельности предприятия
тема: Программа диагностики рентабельности предприятия. Исходные данные и основные требования: Перечень предприятий; Показатели деятельности предприятий (выручка от реализации продукции, переменные затраты, постоянные затраты, собственные капиталы, долгосрочные кредиты, краткосрочные кредиты, средняя расчётная ставка процента, ставка налогообложения); Реализуемые функции: расчёт рентабельности...
C++ Строка: В заданном предложении найти пару слов, из которых одно является обращение другого
1.В заданном предложении найти пару слов, из которых одно является обращение другого.( обращение-слово, получающиеся из исходного за-писью его букв в обратном порядке).
C++ Прата -> Шлее = PROFIT? http://www.cyberforum.ru/cpp-beginners/thread811659.html
Изучением программирования занялся от безделья. Путём гугления выбрал С++. В качестве первой книги - Стивен Прата "Язык программирования С++. Лекции и упражнения. 5-е издание". Прочитал. Можно ли после неё перейти к прочтению Макса Шлее "Профессиональное программирование на QT"? Или между ними стоит ещё что-то прочитать? Я понимаю, что учить мне надо ещё ого-го сколько всего, просто хочется...
C++ вложенные классы Здорова господа! Снова мучаю класс String еще не замучал. Не могу скомпилировать программу с вложенным классом вот код: #include <iostream> using std::cout; using std::endl; class String { struct Srep;//predctavlenie подробнее

Показать сообщение отдельно
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
18.03.2013, 14:07     Ошибка при работе с мютексом
Взгляните на правильную реализацию потокобезопасного стека и сравните со своей реализацией, некие функции у вас вообще не понятны.
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
struct empty_stack: std::exception
{
    const char* what() const throw()
    {
        return "empty stack";
    }
    
};
 
template<typename T>
class threadsafe_stack
{
private:
    std::stack<T> data;
    mutable std::mutex m;
public:
    threadsafe_stack(){}
    threadsafe_stack(const threadsafe_stack& other)
    {
        std::lock_guard<std::mutex> lock(other.m);
        data=other.data;
    }
    threadsafe_stack& operator=(const threadsafe_stack&) = delete;
 
    void push(T new_value)
    {
        std::lock_guard<std::mutex> lock(m);
        data.push(new_value);
    }
    std::shared_ptr<T> pop()
    {
        std::lock_guard<std::mutex> lock(m);
        if(data.empty()) throw empty_stack();
        std::shared_ptr<T> const res(std::make_shared<T>(data.top()));
        data.pop();
        return res;
    }
    void pop(T& value)
    {
        std::lock_guard<std::mutex> lock(m);
        if(data.empty()) throw empty_stack();
        value=data.top();
        data.pop();
    }
    bool empty() const
    {
        std::lock_guard<std::mutex> lock(m);
        return data.empty();
    }
};
 
Текущее время: 12:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru