Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Файл результата не создается https://www.cyberforum.ru/ cpp-beginners/ thread1960721.html
Пишу код очереди, а именно выгрузка контента очереди в файл. Все бы ничего, но файл не создается.. Я схожий (упрощенный) код написал в другом проекте, и все воркает как надо, а тут- фиг.... Вот...
C++ Получить файл, содержащий суммы, разности и произведения соответствующих пар чисел исходных файлов
Дано 2 файла, содержащих одинаковое количество чисел. Получить третий, содержащий суммы, разности и произведения соответствующих пар чисел, находящихся в исходных файлах. напишите пожалуйста...
C++ Программа с защитой от несанкционированного копирования https://www.cyberforum.ru/ cpp-beginners/ thread1960717.html
Необходимо написать программу на C++, которая защищала бы сама себя от несанкционированного копирования с CD-диска с привязкой к CD-ROM. У кого-нибудь есть идеи? Представляю, как сделать...
C++ Переписать текст заменив каждую букву другой, отстоящей от нее в алфавите на n позиций Помогите , пожалуйста написать функцию в которой некоторый текст, записанный с помощью русских букв и знаков препинания, переписывается, заменив каждую букву другой, отстоящей от нее в алфавите на n... https://www.cyberforum.ru/ cpp-beginners/ thread1960716.html
Компилятся ли библиотеки при статической линковке, если я их не использую? C++
День всем добрый! Такой вопрос. К примеру, я подключил к проекту целую телегу хедеров, некоторые из которых я не использую. Если я настрою Visual Studio так, что программа компилится вместе с...
C++ Разработать рекурсивную функцию для вывода на экран цифр натурального числа в прямом порядке. Разработать рекурсивную функцию для вывода на экран цифр натурального числа в прямом порядке. https://www.cyberforum.ru/ cpp-beginners/ thread1960702.html
C++ Подключение DLL написанной на Delphi к C++ Добрый вечер, есть API в виде DLL'ки написанной на Delphi и что-то на подобие документации. Каким образом можно подключить эту библиотеку и импортировать из нее функции? В интернете нашел много... https://www.cyberforum.ru/ cpp-beginners/ thread1960700.html C++ Описать структуру «время» (часы, минуты, секунды)
Описать структуру «время» (часы, минуты, секунды). Определить функцию «позже» для проверки, предшествует ли время t2 времени t1 (в рамках суток). как следует составить структуру?
C++ Перегрузка оператора присваивания в строке Всем привет, задание в вузе дали, пытаюсь понять правильно ли я сделал его Ввести с клавиатуры строку  символов . Признак окончания ввода строки - нажатие клавиши "Ввод". Программа должна... https://www.cyberforum.ru/ cpp-beginners/ thread1960688.html C++ Понять, что написано на картинке Нужно понять, что написано на этой картинке. https://www.cyberforum.ru/ cpp-beginners/ thread1960684.html
Подключение файлов main.cpp some.cpp some.h C++
Всем привет, программа разделенна на три файла poly.cpp main.cpp poly.h Кто мог бы объяснить как происходит подключение этих файлов, и как её запустить? Спасибо за внимание!
C++ Провести оптимизацию программы по использованию памяти Программа проверяет является ли строка палиндромом. Нужно как-то упростить, помогите. #include <iostream> #include <string> using namespace std; int main() https://www.cyberforum.ru/ cpp-beginners/ thread1960682.html
72 / 69 / 38
Регистрация: 09.10.2012
Сообщений: 238
0

Применение рекурсивных мьютексов - C++ - Ответ 10332418

14.04.2017, 23:05. Показов 1775. Ответов 3
Метки (Все метки)

Задался таким вопросом - является ли применение рекурсивных мьютексов признаком плохой архитектуры? Понятное дело, что у разных вещей своё назначение, поэтому лучше пример:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct Data
{
    int a;
    int b;
};
 
Data data;
 
void update_data1()
{
    std::lock_guard<std::mutex> lock(m_mutex);
    // каким-то образом изменяются поля data
}
 
void update_data2()
{
    std::lock_guard<std::mutex> lock(m_mutex);
    // каким-то образом изменяются поля data
}
Тут вроде всё хорошо, но наступает момент, когда нужно использовать функцию вроде

C++
1
2
3
4
5
6
void complex_update()
{
    // хочется использовать блокировку тут, чтобы операция complex_update была атомарна для других потоков
    update_data1();
    update_data2();
}
Тот же самый мьютекс тут использовать не получится, т.к. будет дедлок. Первое, что приходит в голову - recursive_mutex. Является ли это решение хорошим в данном случае?

Вернуться к обсуждению:
Применение рекурсивных мьютексов C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.04.2017, 23:05
Готовые ответы и решения:

Реальное применение рекурсивных вычислений
Добрый день. Ползая по форуму https://www.cyberforum.ru я обратил внимание, что довольно часто...

Синхронизация процессов при помощи мьютексов
начал разбираться с мбютексами, а точнее как синхронизировать 2 рпоцесса с их помощью. #include...

Когда нужно лочить ( делать lock() ) сразу нескольких мьютексов
Здравствуйте товарищи девелоперы! Прошу прощения за банальный в своем роде вопрос, однако когда...

Использование рекурсивных методов
Потрібен приклади використання рекурсивних методів / надо примеры использование рекурсивных методов...

3
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.04.2017, 23:05
Помогаю со студенческими работами здесь

Использование рекурсивных функций
Дан массив x, . . . , x, состоящий из целых чисел, и целое число y. Найти количество элементов...

В чем преимущество рекурсивных функций?
Насколько я понял, любую рекурсивную функцию можно реализовать итерационно. И при этом,...

Алгоритм решения рекурсивных функций
Цель: Прошу подсказать алгоритм решения рекурсивной функции. Задача:

Задачи на использование рекурсивных функций
1. Создайте рекурсивную функцию, которая выводит на экран простые множители числа. 2. Создайте...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru