Массив с потокобезопасными объектами C++

86
05 августа 2019, 13:10

Допустим, у меня есть класс Foo

class Foo {...}

И массив указателей длины N

Foo * fooArr[N];

Есть несколько потоков, которые должны читать и изменять элементы массива (а могут вообще удалить какой-то элемент) Первое, что приходит на ум - добавить массив мьютексов mutex mutArr[N];

И функции void lock(int index); и unlock(int index); Которые блокировали бы определённый объект на время работы с ним

Но при слишком больших длинах возникает исключение

#include <mutex>
#include <iostream>
using namespace std;
const int N = 25000;
int main() {
    mutex mutArr[N];
    cout << sizeof(mutArr) << endl;
    system("pause");
    return 0;
}


  1. Могу ли я как-то получить максимальное количество мьютексов в программе?
  2. Есть ли альтернативный способ организовать блокировку определённого элемента массива? (потока всего 2-3)
READ ALSO
Как обратится к тексту на textEdit в qt?

Как обратится к тексту на textEdit в qt?

Мне нужно програмно изменить текст в QTextEditИ не знаю как к нему обратится, точнее к его тексту

114
Аналоги функций Python str и int в С++

Аналоги функций Python str и int в С++

В Python есть две функции: str и intЕсть ли возможность так переключаться между строкой и числом в C++? У меня есть a = 10

113
JavaFx TreeView и ListView скрывать элементы

JavaFx TreeView и ListView скрывать элементы

Как скрывать некоторые элементы TreeView и ListView?

147