powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / как обнулить ячеку вектора (не удаляя)?
25 сообщений из 146, страница 5 из 6
как обнулить ячеку вектора (не удаляя)?
    #40059841
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя дырки можно класть в конец массива и брать только с конца массива.
Если нам не важна последовательность в результирующем массиве.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059843
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravКстати, если массив дырок и дырок много, то потребуется уже смещать влево массив дырок.

Массив дырок может быть, например, очередью. Или стэком.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059844
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
У него было волшебное слово "место" в массиве.Это он индекс наверно)))
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059846
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Хотя дырки можно класть в конец массива и брать только с конца массива.
Если нам не важна последовательность в результирующем массиве.

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

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

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

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

Он про другие массивы не хотел, а про этот даже не подумал. mayton его этим моментом обрадовал ))

ТС похоже даже в теории не представляет как писать для многопоточности.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059854
PetroNotC Sharp
Можно проще. Поток на вектор с дырками и поток на вектор без дырок. Два вектора он сам предложил.

нельзя. Они в одном потоке должны быть. Точнее дырки сами по себе, а потокИ к ним обращаются. Нельзя их в какой-то поток пихать.
Dima T
Он про другие массивы не хотел, а про этот даже не подумал.

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

stack в принципе решает эту проблему

stack тоже нельзя с нескольких потоков одновременно пользовать. queue тоже.

Все классы-контейнеры из std непотокобезопасные, поэтому при многопоточной работе с ними надо дополнительно прописывать синхронизацию доступа.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059860
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автору нужно написать прототип класса. Где будет два закрытых массива: значения и дырки.
Описать сигнатуру методов и требования к этим методам в плане потокобезопасности.

Тогда можно предметно говорить как реализовывать этот класс. Иначе толку не будет.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059868
так, а что если при каждой записи создавать очередь?
чаще то будет чтение идти, запись так то сильно пореже
но чтобы совсем исключить шанс data race, что если эту попытку записи класть в очередь как-то (я не знаю как ф-ю покласть в очередь - можно ли?)
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059872
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик,
Еще немного и врубишься что потокам надо создавать или нарезать задачи.
А не наоборот, городить потоки возле одной кастрюли
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059877
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
так, а что если при каждой записи создавать очередь?

Как ты себе это представляешь? Покажи как в коде это будет выглядеть.

Чего ты так мутексов испугался? Они быстро работают, а без них многопоточная работа невозможна.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059881
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
По правде говоря, без блокировок тоже можно работать. В веб даже рекомендуется.
Из двух зол выбрали меньшее.)
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059889
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Правда это для для java.
Но суть что код надо подстраивать под параллелизм.
Ибо компромиссы!
авторКомпромиссы
Стратегия высокого параллелизма реагирует на требования высокого параллелизма снижением охвата транзакции до уровня, минимально возможного в данной архитектуре. Это приводит к более быстрому завершению (фиксации или откату) транзакции, чем при использовании стратегии слоя API. Однако, как учит нас история хорошего корабля Vasa (см. Ресурсы), вы не можете иметь все и сразу. Жизнь состоит из компромиссов, и обработка транзакций – не исключение. Не можете же вы впрямь рассчитывать одновременно и на такой же уровень надежности обработки транзакций, что и в стратегии слоя API, и на максимальное количество параллельных обращений и максимальную пропускную способность при пиковых нагрузках.
http://www.k-press.ru/cs/2009/3/ts/ts.asp
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059890
Dima T
Как ты себе это представляешь? Покажи как в коде это будет выглядеть.

это я у общественности спрашиваю - как
Dima T
Чего ты так мутексов испугался? Они быстро работают, а без них многопоточная работа невозможна.

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

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

Ну... чисто технически Оракл тоже использует блокировки. На очень короткое время и не для
транзакций а для поддержания консистентности db_blocks (это такие 8К кусочки памяти) в области
buffer_pull когда конкурирующие SQL-процессы пишут и читают один и тот-же блок.

Как разрабатывать ПО вообще без блокировок - ХЗ. Есть для этого технология Акторов.
Но у нее есть свои проблемы. И свои сложности дизайна.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059896
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
бабушкин зайчик
Dima T
Как ты себе это представляешь? Покажи как в коде это будет выглядеть.

это я у общественности спрашиваю - как
Dima T
Чего ты так мутексов испугался? Они быстро работают, а без них многопоточная работа невозможна.

да не испугался, а не вижу смысла, если вектор висит особняком, а потоки лочить, то какой толк от мутексов?
есть толк от них? Залочил поток и другой тоже залочил, так они же всё равно в одну ячейку смогут записать, потому что она то НЕ залочена...

Каша у тебя в голове, не понимаешь как блокировки работают. Нельзя залочить ячейку, нет такой операции "залочить ячейку".
Я ссылки давал выше 22304501 , почитал? Почитай хотя бы статью на хабре.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059897
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
В веб потоки тоже ресурс. И очень даже дорогой.
У веб сервера их 10 штук примерно.
А юзверей пусть пол лимона.
ТС похоже свой сервер пишет)))))
Где ище миллион вектор?
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059902
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Я же не о технических говорил.
Нельзя узко про одни блоки вещать.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059904
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты пишешь дескыть Оракл не использует блокировки. Я уточняю что в понимании ОС он их еще как использует.

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

Вообще, в веб параллельный доступ осуществляет субд..
Почему автор решил субд заново изобрести не знаю
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059907
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ты пишешь дескыть Оракл не использует блокировки. Я уточняю что в понимании ОС он их еще как использует.

Просто на уровне транзакций - другой подход. И другие блокировки.
я написал он не блокировочник. Механизм другой! Без блоков!
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059908
Dima T
Я ссылки давал выше 22304501 , почитал? Почитай хотя бы статью на хабре.

обязательно прочитаю, но позже.
Так я и написал, что не залочится. Это то я понимаю. Я не понимаю, зачем мне мутекс в таком случае...
Надеюсь хабр даст ответ.
...
Рейтинг: 0 / 0
как обнулить ячеку вектора (не удаляя)?
    #40059910
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, есть же концепция "множество читателей - один писатель". Только я, за ненадобностью, не помню
как её реализовать на C++. Даже названия не помню. :(
...
Рейтинг: 0 / 0
25 сообщений из 146, страница 5 из 6
Форумы / C++ [игнор отключен] [закрыт для гостей] / как обнулить ячеку вектора (не удаляя)?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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