|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик PetroNotC Sharp ТЗ где?))) править вектор в несколько потоков, и чтобы всё чётко ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:26 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
PetroNotC Sharp бабушкин зайчик, Заполнил вектор на миллион - отдал потоку. Заполнил второй - отдал второму потоку. НИЧЕГО НЕ ЛОЧИМ он правится потоками бесконечное кол-во раз по одной ячейке за раз ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:26 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик mayton Мне кажется что поиск свободных дырок в массиве (задачка o(n) асимптоматичная) - нивелирует вообще все выгоды которые автор хочет получить от мнимых оптимизаций и кешей и потоков. Тут по смыслу больше не vector подходит а set. Но это моё частное мнение и если автор хочет - ну пускай делает пробы с o(n) по массиву-миллионнику. P.S. Scientia potentia est. а не надо искать, надо вектор дырок держать Еще один вектор где лежат одни дырки? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:29 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
mayton Еще один вектор где лежат одни дырки? адреса дырок ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:29 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик PetroNotC Sharp бабушкин зайчик, Заполнил вектор на миллион - отдал потоку. Заполнил второй - отдал второму потоку. НИЧЕГО НЕ ЛОЧИМ он заполняется потоками ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:31 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик Dima T Один поток работает только с одним конкретным i или с разными? Т.е. {v1[5], v2[5], v3[5]} или {v1[4], v2[7], v3[6]} ? Если первое, то мутекс как я писал 22304417 каждый поток может залезть в v1[1] ИЛИ v1[2] ИЛИ vN[M] - в любой НО всегда есть шанс, что оба залезут в одну ячейку и такой баг потом хер поймаешь Начни с простого - один мутекс на всех, код будет как я выше показал 22304455 Только оптимизируй код так чтобы сначала подготовить нужные данные, затем блокировка, быстро прочитать/записать и снять блокировку. Будет тормозить - тогда будешь дальше усложнять работу с блокировками. К тому времени немного опыта добавится. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:32 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик mayton Еще один вектор где лежат одни дырки? адреса дырок А как менеджерить этот вектор адресов дырок? И как его блокировать? Он ведь тоже будет играть по правилам твоей мультипоточки и ему точно также нужны будут мутексы или критические секции. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:33 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
Мне нравится дизайн))) Тарелок на столе нет. Все потоки едоки варят кастрюлю супа. Потом как сварили, начинают есть все из одной. Толкаясь и матерясь. Почему никто в очередь не ставит строго по одному. )) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:34 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
mayton бабушкин зайчик пропущено... адреса дырок А как менеджерить этот вектор адресов дырок? И как его блокировать? Он ведь тоже будет играть по правилам твоей мультипоточки и ему точно также нужны будут мутексы или критические секции. Кстати, если у автора есть массив дырок, то не очень понятен его первый пост - где он предлагал вводить булеву переменную в каждую ячейку - признак того, что ячейка пустая. Ну а как началась многопоточность то ваще. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:38 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
petrav mayton пропущено... А как менеджерить этот вектор адресов дырок? И как его блокировать? Он ведь тоже будет играть по правилам твоей мультипоточки и ему точно также нужны будут мутексы или критические секции. Кстати, если у автора есть массив дырок, то не очень понятен его первый пост - где он предлагал вводить булеву переменную в каждую ячейку - признак того, что ячейка пустая. Ну а как началась многопоточность то ваще. Одно другому не мешает: флаг пустоты нужен при проверке когда обращаешься к конкретной ячейке, а список индексов пустых для добавления новых, иначе перебор всего массива в поисках пустой. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:43 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
Dima T бабушкин зайчик пропущено... каждый поток может залезть в v1[1] ИЛИ v1[2] ИЛИ vN[M] - в любой НО всегда есть шанс, что оба залезут в одну ячейку и такой баг потом хер поймаешь Начни с простого - один мутекс на всех, код будет как я выше показал 22304455 Только оптимизируй код так чтобы сначала подготовить нужные данные, затем блокировка, быстро прочитать/записать и снять блокировку. Будет тормозить - тогда будешь дальше усложнять работу с блокировками. К тому времени немного опыта добавится. Я вот честно не вижу смысла в мутексе вообще... может опыта конечно мало, но он очевидно НЕ залочит сами данные, а без этого совершенно накласть на всё остальное. А вот как обеспечить НЕвозможность записать в одну ячейку - вопрос остаётся открытым... вешать где-то флаг, что эта ячейка занята и чекать его каждый раз? это на сколько же %% похерит производительность? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:43 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
mayton бабушкин зайчик пропущено... адреса дырок А как менеджерить этот вектор адресов дырок? И как его блокировать? Он ведь тоже будет играть по правилам твоей мультипоточки и ему точно также нужны будут мутексы или критические секции. ты меня такими вопросами доведёшь до белого колена, плюну на всё и сделаю в один поток ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:45 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик А вот как обеспечить НЕвозможность записать в одну ячейку - вопрос остаётся открытым... Вообще-то для этих целей мутекс используют обычно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:45 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик, А ты слышал что оракл не блокировочник а сиквел блокировочник? Никто ведь не помер. Узко вопросы задаешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:46 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик mayton пропущено... А как менеджерить этот вектор адресов дырок? И как его блокировать? Он ведь тоже будет играть по правилам твоей мультипоточки и ему точно также нужны будут мутексы или критические секции. ты меня такими вопросами доведёшь до белого колена, плюну на всё и сделаю в один поток Достаточно добавить отдельный мутекс для работы с этим массивом. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:49 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
Dima T бабушкин зайчик А вот как обеспечить НЕвозможность записать в одну ячейку - вопрос остаётся открытым... Вообще-то для этих целей мутекс используют обычно. а мой случай обычный? В моём случае он заблочит ячейку? Потому что даже если он заблочит весь вектор, это уже НЕ подходит. Но он вроде даже и вектор не лочит... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:49 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик это на сколько же %% похерит производительность? Никто на это не ответит. Программирование - это практическая наука. А моделируемый объект (программа) настолько сложен что мы не в состоянии создать формулу времени отклика. Напиши макет кода. Запускай. И смотри как он работает. Симуляция - это нормальный способ замера времени. Физики так делают часто. Симулируют потоки частиц и смотрят потом как оно. Меряют. Тоесть смысл моего поста в том что мы не можем предложить улучшение к пустоте. Нам нужен объект. Кстати у меня к тебе настойчивая модераторская просьба - огласить полное ТЗ. Я понимаю что для тебя это игровая задача и ты по ходу придумываешь брейнштомом всякие костыли и подпорки в виде массивов индексов. Но мы просто топчемся на месте. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:50 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
Dima T бабушкин зайчик пропущено... ты меня такими вопросами доведёшь до белого колена, плюну на всё и сделаю в один поток Достаточно добавить отдельный мутекс для работы с этим массивом. и все будут висеть и ждать его? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:50 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
Почитай про синхронизацию доступа: https://www.google.com/search?q=синхронизация доступа к данным С https://habr.com/ru/post/182610/ ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:52 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
mayton Кстати у меня к тебе настойчивая модераторская просьба - огласить полное ТЗ. так огласил же - запись в вектор в несколько потоков БЕЗ data race/race condition ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:53 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчики все будут висеть и ждать его? Нет, только те, кого ты заставишь это делать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:56 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик mayton Кстати у меня к тебе настойчивая модераторская просьба - огласить полное ТЗ. так огласил же - запись в вектор в несколько потоков БЕЗ data race/race condition ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:57 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
Dima T petrav пропущено... Кстати, если у автора есть массив дырок, то не очень понятен его первый пост - где он предлагал вводить булеву переменную в каждую ячейку - признак того, что ячейка пустая. Ну а как началась многопоточность то ваще. Одно другому не мешает: флаг пустоты нужен при проверке когда обращаешься к конкретной ячейке, а список индексов пустых для добавления новых, иначе перебор всего массива в поисках пустой. Ну если нам нужны операции со всем массивом, то да. Например, посчитать сумму всех не пустых полей. Но это снова потребует блокировки всего массива вместе с массивом дырок, а не на уровне отдельных ячеек. Кстати, если массив дырок и дырок много, то потребуется уже смещать влево массив дырок. А аффтар этага ни хател. Короче, это ржачная тема. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 14:57 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
ТС, тебя закроют. Код гони с проблемой. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 15:00 |
|
как обнулить ячеку вектора (не удаляя)?
|
|||
---|---|---|---|
#18+
бабушкин зайчик mayton Кстати у меня к тебе настойчивая модераторская просьба - огласить полное ТЗ. так огласил же - запись в вектор в несколько потоков БЕЗ data race/race condition Это-же не все. Дальше ты писал еще про "адреса дырок". Что с ними делать? Ты их уже отменяешь? И еще надо-бы знать сколько будет потоков. Если их будет 100500 - тогда наверное лучше их ставить в некую очердь команд. И надо знать (примерно) характер и род доступа к массиву. Если он - когерентный - то мы можем шибко соптимизировать на близких адресах хотя-бы в пределах кеш-линий или страниц. Если между потоками не нужен жесткий ордеринг команд - то мы можем переупорядочить поток команд таким образом чтобы мы больше писали в кеш-линию и страницу чем рандомно. Так работали старые жесткие диски (NCQ/TCQ). И вроде-бы никто не замечал логических ошибок чтения записи. Всё было прозрачно. И вообще чем больше твой массив - тем больше надо думать об эффекте L2/L3. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.04.2021, 15:00 |
|
|
start [/forum/topic.php?fid=57&msg=40059832&tid=2017237]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 257ms |
total: | 415ms |
0 / 0 |