Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 6 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Junior
Статус: Не в сети
Регистрация: 22.07.2006
Всем привет!

Помогите пожалуйста решить следующую проблему:

У меня есть некий класс A который имеет некую переменную B. Я создаю N таких объектов в памяти, и потом из двух или более разных потоков (многозадачность) меняю вышеупомянутую переменную в каждом конкретном объекте по разному и в разное время. Проблема в том что мне НЕЛЬЗЯ чтобы к этой переменной в одном отдельно взятом созданном в памяти объекте мог получить доступ более чем один поток одновременно. В теории это можно решить при помощи создания отдельного объекта CRYTICAL_SECTION для каждого созданного экземпляра класса и защитой этой критической секцией метода присвоения переменной значения. Но объектов планируется до сотни тысяч в памяти. Как мне поступить в этом случае?

С уважением.
Добавлено спустя 35 минут, 16 секунд
С++ чистый WinAPI.

Скажем мне нужно запретить одновременный доступ к переменной класса, но для каждого созданного объекта отдельно. В смысле чтоб блокирование этой переменной не блокировало изменение этой же переменной в других экземплярах этого класса.



Партнер
 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
CubeReality я не понимаю в чем проблема. Для каждого нового экземпляра класса будет своя критическая секция, и экземпляр переменной. Проилюстрируй чтоли, примером кода.

_________________
Ку ку


 

Junior
Статус: Не в сети
Регистрация: 22.07.2006
Daemon писал(а):
CubeReality я не понимаю в чем проблема. Для каждого нового экземпляра класса будет своя критическая секция, и экземпляр переменной. Проилюстрируй чтоли, примером кода.


Не ну все правильно, только я боялся что я не смогу создать критических секций более чем определенное количество определенное ОС для одной программы


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
CubeReality критические секции - это минимально возможный оверхед. Если их действительно нужно большое кол-во, просто предлагаю сделать переменную volatile, и забить на критическии секции. Обычно операции с volatile переменной простого типа являются atomic для операционной системы, и SMP-safe.

_________________
Ку ку


 

Member
Статус: Не в сети
Регистрация: 11.04.2004
Откуда: СПБ
Можно ламерский вопрос?
Критические секции это аналог мониторов?


 

Member
Статус: Не в сети
Регистрация: 14.01.2004
Откуда: Киев, Украина
Catar критические секции - это спин локи, а мониторы - это помоему немного из другой оперы (если речь о внутреннем устройстве).

_________________
Ку ку


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 6 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan