powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / как обнулить ячеку вектора (не удаляя)?
25 сообщений из 146, страница 4 из 6
как обнулить ячеку вектора (не удаляя)?
    #40059807
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
PetroNotC Sharp
ТЗ где?)))

править вектор в несколько потоков, и чтобы всё чётко
постановщика тебе надо грамотного
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059808
PetroNotC Sharp
бабушкин зайчик,
Заполнил вектор на миллион - отдал потоку.
Заполнил второй - отдал второму потоку.
НИЧЕГО НЕ ЛОЧИМ

он правится потоками бесконечное кол-во раз по одной ячейке за раз
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059810
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
mayton
Мне кажется что поиск свободных дырок в массиве (задачка o(n) асимптоматичная) - нивелирует вообще все выгоды
которые автор хочет получить от мнимых оптимизаций и кешей и потоков. Тут по смыслу больше не vector подходит а set.

Но это моё частное мнение и если автор хочет - ну пускай делает пробы с o(n) по массиву-миллионнику.

P.S. Scientia potentia est.

а не надо искать, надо вектор дырок держать

Еще один вектор где лежат одни дырки?
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059811
mayton
Еще один вектор где лежат одни дырки?

адреса дырок
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059812
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
PetroNotC Sharp
бабушкин зайчик,
Заполнил вектор на миллион - отдал потоку.
Заполнил второй - отдал второму потоку.
НИЧЕГО НЕ ЛОЧИМ

он заполняется потоками
смешно. Чтобы опять с одной миски все ели?)))))
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059813
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
Dima T
Один поток работает только с одним конкретным i или с разными? Т.е. {v1[5], v2[5], v3[5]} или {v1[4], v2[7], v3[6]} ? Если первое, то мутекс как я писал 22304417

каждый поток может залезть в v1[1] ИЛИ v1[2] ИЛИ vN[M] - в любой
НО всегда есть шанс, что оба залезут в одну ячейку
и такой баг потом хер поймаешь

Начни с простого - один мутекс на всех, код будет как я выше показал 22304455 Только оптимизируй код так чтобы сначала подготовить нужные данные, затем блокировка, быстро прочитать/записать и снять блокировку.
Будет тормозить - тогда будешь дальше усложнять работу с блокировками. К тому времени немного опыта добавится.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059814
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
mayton
Еще один вектор где лежат одни дырки?

адреса дырок

А как менеджерить этот вектор адресов дырок? И как его блокировать? Он ведь тоже будет играть по правилам
твоей мультипоточки и ему точно также нужны будут мутексы или критические секции.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059815
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нравится дизайн)))
Тарелок на столе нет.
Все потоки едоки варят кастрюлю супа.
Потом как сварили, начинают есть все из одной.
Толкаясь и матерясь. Почему никто в очередь не ставит строго по одному.
))
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059817
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
бабушкин зайчик
пропущено...

адреса дырок

А как менеджерить этот вектор адресов дырок? И как его блокировать? Он ведь тоже будет играть по правилам
твоей мультипоточки и ему точно также нужны будут мутексы или критические секции.

Кстати, если у автора есть массив дырок, то не очень понятен его первый пост - где он предлагал вводить булеву
переменную в каждую ячейку - признак того, что ячейка пустая. Ну а как началась многопоточность то ваще.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059820
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
пропущено...

А как менеджерить этот вектор адресов дырок? И как его блокировать? Он ведь тоже будет играть по правилам
твоей мультипоточки и ему точно также нужны будут мутексы или критические секции.

Кстати, если у автора есть массив дырок, то не очень понятен его первый пост - где он предлагал вводить булеву
переменную в каждую ячейку - признак того, что ячейка пустая. Ну а как началась многопоточность то ваще.

Одно другому не мешает: флаг пустоты нужен при проверке когда обращаешься к конкретной ячейке, а список индексов пустых для добавления новых, иначе перебор всего массива в поисках пустой.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059821
Dima T
бабушкин зайчик
пропущено...

каждый поток может залезть в v1[1] ИЛИ v1[2] ИЛИ vN[M] - в любой
НО всегда есть шанс, что оба залезут в одну ячейку
и такой баг потом хер поймаешь

Начни с простого - один мутекс на всех, код будет как я выше показал 22304455 Только оптимизируй код так чтобы сначала подготовить нужные данные, затем блокировка, быстро прочитать/записать и снять блокировку.
Будет тормозить - тогда будешь дальше усложнять работу с блокировками. К тому времени немного опыта добавится.

Я вот честно не вижу смысла в мутексе вообще...
может опыта конечно мало, но он очевидно НЕ залочит сами данные, а без этого совершенно накласть на всё остальное.
А вот как обеспечить НЕвозможность записать в одну ячейку - вопрос остаётся открытым...
вешать где-то флаг, что эта ячейка занята и чекать его каждый раз?
это на сколько же %% похерит производительность?
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059822
mayton
бабушкин зайчик
пропущено...

адреса дырок

А как менеджерить этот вектор адресов дырок? И как его блокировать? Он ведь тоже будет играть по правилам
твоей мультипоточки и ему точно также нужны будут мутексы или критические секции.

ты меня такими вопросами доведёшь до белого колена, плюну на всё и сделаю в один поток
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059823
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
А вот как обеспечить НЕвозможность записать в одну ячейку - вопрос остаётся открытым...

Вообще-то для этих целей мутекс используют обычно.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059824
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,
А ты слышал что оракл не блокировочник а сиквел блокировочник?
Никто ведь не помер.
Узко вопросы задаешь.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059826
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
mayton
пропущено...

А как менеджерить этот вектор адресов дырок? И как его блокировать? Он ведь тоже будет играть по правилам
твоей мультипоточки и ему точно также нужны будут мутексы или критические секции.

ты меня такими вопросами доведёшь до белого колена, плюну на всё и сделаю в один поток

Достаточно добавить отдельный мутекс для работы с этим массивом.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059827
Dima T
бабушкин зайчик
А вот как обеспечить НЕвозможность записать в одну ячейку - вопрос остаётся открытым...

Вообще-то для этих целей мутекс используют обычно.

а мой случай обычный?
В моём случае он заблочит ячейку? Потому что даже если он заблочит весь вектор, это уже НЕ подходит.
Но он вроде даже и вектор не лочит...
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059828
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик

это на сколько же %% похерит производительность?

Никто на это не ответит. Программирование - это практическая наука. А моделируемый объект (программа)
настолько сложен что мы не в состоянии создать формулу времени отклика. Напиши макет кода. Запускай.
И смотри как он работает.

Симуляция - это нормальный способ замера времени. Физики так делают часто. Симулируют потоки частиц
и смотрят потом как оно. Меряют.

Тоесть смысл моего поста в том что мы не можем предложить улучшение к пустоте. Нам нужен объект.

Кстати у меня к тебе настойчивая модераторская просьба - огласить полное ТЗ. Я понимаю
что для тебя это игровая задача и ты по ходу придумываешь брейнштомом всякие костыли
и подпорки в виде массивов индексов. Но мы просто топчемся на месте.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059829
Dima T
бабушкин зайчик
пропущено...

ты меня такими вопросами доведёшь до белого колена, плюну на всё и сделаю в один поток

Достаточно добавить отдельный мутекс для работы с этим массивом.

и все будут висеть и ждать его?
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059831
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059832
mayton
Кстати у меня к тебе настойчивая модераторская просьба - огласить полное ТЗ.

так огласил же - запись в вектор в несколько потоков БЕЗ data race/race condition
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059835
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчики все будут висеть и ждать его?

Нет, только те, кого ты заставишь это делать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059836
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
mayton
Кстати у меня к тебе настойчивая модераторская просьба - огласить полное ТЗ.

так огласил же - запись в вектор в несколько потоков БЕЗ data race/race condition
а где тут скорость с первой страницы. И где Нужность дырок?
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059837
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T
petrav
пропущено...

Кстати, если у автора есть массив дырок, то не очень понятен его первый пост - где он предлагал вводить булеву
переменную в каждую ячейку - признак того, что ячейка пустая. Ну а как началась многопоточность то ваще.

Одно другому не мешает: флаг пустоты нужен при проверке когда обращаешься к конкретной ячейке, а список индексов пустых для добавления новых, иначе перебор всего массива в поисках пустой.

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

Кстати, если массив дырок и дырок много, то потребуется уже смещать влево массив дырок. А аффтар этага ни хател.

Короче, это ржачная тема.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059838
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС, тебя закроют.
Код гони с проблемой.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059839
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
mayton
Кстати у меня к тебе настойчивая модераторская просьба - огласить полное ТЗ.

так огласил же - запись в вектор в несколько потоков БЕЗ data race/race condition

Это-же не все. Дальше ты писал еще про "адреса дырок". Что с ними делать? Ты их уже отменяешь?

И еще надо-бы знать сколько будет потоков. Если их будет 100500 - тогда наверное лучше их ставить
в некую очердь команд. И надо знать (примерно) характер и род доступа к массиву. Если он - когерентный
- то мы можем шибко соптимизировать на близких адресах хотя-бы в пределах кеш-линий или страниц.
Если между потоками не нужен жесткий ордеринг команд - то мы можем переупорядочить поток команд
таким образом чтобы мы больше писали в кеш-линию и страницу чем рандомно. Так работали старые жесткие
диски (NCQ/TCQ). И вроде-бы никто не замечал логических ошибок чтения записи. Всё было прозрачно.
И вообще чем больше твой массив - тем больше надо думать об эффекте L2/L3.
...
Рейтинг: 0 / 0
25 сообщений из 146, страница 4 из 6
Форумы / C++ [игнор отключен] [закрыт для гостей] / как обнулить ячеку вектора (не удаляя)?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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