powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Проблема многопоточного доступа к переменной
25 сообщений из 29, страница 1 из 2
Проблема многопоточного доступа к переменной
    #34310753
Фотография lexluther
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

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

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

С уважением.
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34310769
Фотография grexhide
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lexlutherНо объектов планируется до сотни тысяч в памяти. Как мне поступить в этом случае?


Используй мутексы. CreateMutex, OpenMutex, ReleaseMutex и иже с ними.
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34310836
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вас беспокоит дополнительные ресурсы, которые будут расходоватся на удержание объектов CRYTICAL_SECTION ?
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34310909
mikhail_n
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще то критикал секшн самый "худой" из всех остальных майкрософтофских примитивов синхронизации.
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34311176
Фотография lexluther
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВас беспокоит дополнительные ресурсы, которые будут расходоватся на удержание объектов CRYTICAL_SECTION ?

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

Я просто думал что винда не создаст больше чем там допустим 10000 критических секций.
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34311737
vino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В данном случае мутексы ни к чему. Посмотрите варианты на www.wasm.ru.
Я думаю, что 1000000 критических секций вполне реально
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34311814
vino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для случая, когда изменение переменной приводится к одной машинной команде, никаких блокировок не требуется. Но это если потоки получают доступ к уже созданным (!) объектам и объекты не уничтожаются (!), пока с ними ведется работа.
Например, объект гарантированно существует и требуется из разных потоков увеличивать какое-то одно поле. Команды загрузки адреса этого поля в любом потоке идет независимо друг от друга, а команда изменения значения поля только одна (inc или add)!
Вот для случая, когда требуется взять значение поля, использовать его в сложных расчетах или умножать/делить, а затем результат положить обратно - здесь обязательна блокировка этого поля (т.е. это уже критический участок)
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34311917
Фотография grexhide
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vinoДля случая, когда изменение переменной приводится к одной машинной команде, никаких блокировок не требуется.

vinoВ данном случае мутексы ни к чему.

Прям откровение.... На SMP машине в цикле не попробуй "долбить" одну ячейку памяти одной командой.
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34311925
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vinoВ данном случае мутексы ни к чему. Посмотрите варианты на www.wasm.ru.
Я думаю, что 1000000 критических секций вполне реально

Критическая секция реализуется (в том числе) через объект ядра, посему глыбокой разницы между 10000 мьютексами и аналогичным количеством CS в плане влияния на здоровье системы не вижу
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34311943
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grexhide vinoДля случая, когда изменение переменной приводится к одной машинной команде, никаких блокировок не требуется.

vinoВ данном случае мутексы ни к чему.

Прям откровение.... На SMP машине в цикле не попробуй "долбить" одну ячейку памяти одной командой.

Можно применить Interlocked операции
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34312192
Фотография Палестинец
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lexlutherНо объектов планируется до сотни тысяч в памяти. Как мне поступить в этом случае?
Попробовать переосмыслить архитектуру задачи. может быть лучше будет принципиально другое решение.
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34314125
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Палестинец lexlutherНо объектов планируется до сотни тысяч в памяти. Как мне поступить в этом случае?
Попробовать переосмыслить архитектуру задачи. может быть лучше будет принципиально другое решение.

2 lexluther

Честно говря, я затрудняюсь представить себе постановку, при которой потребуется держать сотню тысяч разделяемых объектов в памяти. Вы часом не ядро СУБД разрабатываете?
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34314148
Фотография Aklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понмю, как называется, переменная с пометкой "действие за такт". быстрый доступ короче.

аффтопитезь: объект либо именован, либо не существует
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34315619
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Критическая секция реализуется (в том числе) через объект ядра, посему глыбокой разницы между 10000 мьютексами и аналогичным количеством CS в плане влияния на здоровье системы не вижуCS легковеснее. InterlockedIncrement вроде вообще ничего не потребляет в плане памяти, но там ожидание придётся как-нить по-своему реализовывать.
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34316536
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo Gluk (Kazan)Критическая секция реализуется (в том числе) через объект ядра, посему глыбокой разницы между 10000 мьютексами и аналогичным количеством CS в плане влияния на здоровье системы не вижуCS легковеснее. InterlockedIncrement вроде вообще ничего не потребляет в плане памяти, но там ожидание придётся как-нить по-своему реализовывать.

Легковеснее в плане CPU, а не использования объектов ядра. Как по вашему происходит засыпание на нем ???
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34321583
vino
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если я не ошибаюсь, мьютексы все же для межзадачного взаимодействия и реализация их более тяжеловесная.
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34324174
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)Как по вашему происходит засыпание на нем ???хм… ну не знаю, как обычно. Поток помечается спящим и не получает проца пока не придёт время.
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34324227
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo Gluk (Kazan)Как по вашему происходит засыпание на нем ???хм… ну не знаю, как обычно. Поток помечается спящим и не получает проца пока не придёт время.

Поток засыпает на объетке ядра (скорее всего на событии с автосбросом). Объект создается при создании критической секцией и уничтожается вместе с ней. Внимание вопрос:

Системе не пофиг-ли насоздавали в ней 100000 мьютексов или событий с автосбросом ???
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34324424
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверно уж не пофиг, раз мьютекс более функциональная вещь, значит она хавает больше ресурсов.
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34324431
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор по-китайски, что ли, писал? Ему нужно чего попроще.
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34324437
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoнаверно уж не пофиг, раз мьютекс более функциональная вещь, значит она хавает больше ресурсов.

а ты создай и посмотри.
объект ядра он и в африке объект ядра

аффтору Interlocked куда уж проще ???
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34324448
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)аффтору Interlocked куда уж проще ???слабать на коленке, конечно, можно, но не факт, что это будет лучше.
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34324459
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и кстати, КАК было определено, что мьютекс БОЛЕЕ функциональный ???
все равно что сравнивать функциональность сапогов и ботинков
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34324476
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo Gluk (Kazan)аффтору Interlocked куда уж проще ???слабать на коленке, конечно, можно, но не факт, что это будет лучше.

Это БУДЕТ лучше, поскольку не будет жрать ценный ресурс. И этого ДОСТАТОЧНО для решения задачи автора (насколько я ее понял).

А что, использование CS гарантирует от отсутствия наколенок ???
...
Рейтинг: 0 / 0
Проблема многопоточного доступа к переменной
    #34324518
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в мсдне написано.
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Проблема многопоточного доступа к переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]