У меня есть некий класс A который имеет некую переменную B. Я создаю N таких объектов в памяти, и потом из двух или более разных потоков (многозадачность) меняю вышеупомянутую переменную в каждом конкретном объекте по разному и в разное время. Проблема в том что мне НЕЛЬЗЯ чтобы к этой переменной в одном отдельно взятом созданном в памяти объекте мог получить доступ более чем один поток одновременно. В теории это можно решить при помощи создания отдельного объекта CRYTICAL_SECTION для каждого созданного экземпляра класса и защитой этой критической секцией метода присвоения переменной значения. Но объектов планируется до сотни тысяч в памяти. Как мне поступить в этом случае?
С уважением. Добавлено спустя 35 минут, 16 секунд С++ чистый WinAPI.
Скажем мне нужно запретить одновременный доступ к переменной класса, но для каждого созданного объекта отдельно. В смысле чтоб блокирование этой переменной не блокировало изменение этой же переменной в других экземплярах этого класса.
Member
Статус: Не в сети Регистрация: 14.01.2004 Откуда: Киев, Украина
CubeReality я не понимаю в чем проблема. Для каждого нового экземпляра класса будет своя критическая секция, и экземпляр переменной. Проилюстрируй чтоли, примером кода.
CubeReality я не понимаю в чем проблема. Для каждого нового экземпляра класса будет своя критическая секция, и экземпляр переменной. Проилюстрируй чтоли, примером кода.
Не ну все правильно, только я боялся что я не смогу создать критических секций более чем определенное количество определенное ОС для одной программы
Member
Статус: Не в сети Регистрация: 14.01.2004 Откуда: Киев, Украина
CubeReality критические секции - это минимально возможный оверхед. Если их действительно нужно большое кол-во, просто предлагаю сделать переменную volatile, и забить на критическии секции. Обычно операции с volatile переменной простого типа являются atomic для операционной системы, и SMP-safe.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения