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

Один mutex на несколько функций - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как вычислить суммы положительных элементов каждой строки матрицы? http://www.cyberforum.ru/cpp-beginners/thread1715359.html
пожалуйста,помогите написать программу. Даны целые числа n, m и матрица целых чисел A. Вычислить суммы положительных элементов каждой строки матрицы. Написать функции вычисления суммы положительных элементов строки матрицы.
C++ Распечатать значения аргументов командной строки и параметров окружающей среды для текущего процесса Помогите. Написать программу, распечатывающую значения аргументов командной строки и параметров окружающей среды для текущего процесса. Если булет возможность с описанием всего, так как язык не знаю, заранее спасибо) http://www.cyberforum.ru/cpp-beginners/thread1715356.html
Из одномерного массива чисел сформировать упорядоченный массив, удалив из него некоторые элементы C++
С произвольного одномерного массива вещественных чисел сформировать упорядоченный массив, в котором удалены максимальный и минимальной за значениями элементы.
C++ Ошибка инициализации классов
Доброго времени суток, Я в основном программирую на C#, но вот решил попробовать плюсы. И облом при первой же попытке, в шарпе при объявлении класса я пишу class MyClass1 { MyClass2 mc2 = new MyClass2(); } class MyClass2 {
C++ Сортировка одномерного массива разными методами http://www.cyberforum.ru/cpp-beginners/thread1715338.html
Нужно выполнить сортировку одномерного числового массива по следующим пунктам. Первую часть понимаю(а), дальше разобраться самому не получается. a) Сгенерировать одномерный массив из 60 элементов целого типа в диапа-зоне ; b) Отсортировать массив по убыванию значений элементов методом выбо-ра. с) Сформировать одномерный массив из 50 элементов вещественного типа x=sin(i/4), i=1,2,...,50. d)...
C++ Построение блок-схем алгоритмов средствами MS Visio 2010 и их реализация на языке C ++ Дано натуральное число n и действительные b1, b2, ..., b n. Вывести на экран по 3 числа в строка все парные элементы последовательности. подробнее

Показать сообщение отдельно
Bushmeister
22 / 22 / 6
Регистрация: 19.03.2015
Сообщений: 137

Один mutex на несколько функций - C++

19.04.2016, 13:56. Просмотров 909. Ответов 50
Метки (Все метки)

Есть три функции, которые могут работать с одним вектором в одно и то же время из разных потоков. Можно ли использовать один мьютекс на эти несколько функций, чтобы не синхронизировать работу 3-х мьютексов?
Код чисто для примера, чтобы было понятно, чего я хочу
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
mutex m;
vector<int> vec;
 
void Add(int i)
{
    m.lock();
        try
        {
            vec.push_back(i);
        }
        catch(exception ex)
        {
            m.unlock();
            throw ex;
        }
    m.unlock(); //все ок.
}
 
void Remove(int i)
{
    m.lock()
        try
        {
            //находим с помощью итераторов индекс с значением i и erasим его
            ...
        }
        catch(exception ex)
        {
            //если произойдет ошибка, анлокним мьютекс, чтобы другие функции могли
            //продолжить работу, а ошибку пробросим выше.
            m.unlock();
            throw ex;
        }
    m.unlock(); //все ок.
}
 
void Read(int index)
{
    m.lock()
        try
        {
            for (int i=0; i<vec.size(); i++)
            {
                if (i==index)
                {
                    vec[i].....
                    //шаманим со значением по индексу...
                }
            }
        }
        catch(exception ex)
        {
            m.unlock();
            throw ex;
        }
    m.unlock(); //все ок.
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru