powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Чего-то я не понял с многопоточностью и cuncurrent-коллекциями
7 сообщений из 7, страница 1 из 1
Чего-то я не понял с многопоточностью и cuncurrent-коллекциями
    #39048618
Webtester88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В МСДН про ConcurrentDictionary пишут, что он не защищён от добавления в него новых элементов, если по нему проходиться итераторами - т. е. весь LINQ идёт нафиг. Да ещё на егошние собственные, словаря, методы наложены куча ограничений - как там пишут, этот метод не итерирует по "слепку" текущего состояния словаря. А в чём смысла тогда смысла этих "защищённых" от многопотока коллекций? Мне-то надо, чтобы именно сколько угодно потоков добавляли данные в словарь там или в аналог List (вроде, это СoncurrentBag?), а другие потоки могли делать всякие Select, SelectMany и прочие линк-ништяки по этим коллекциям.

А так получается, что надо самому фиксировать текущий Length коллекции и итерировать обычным for "вручную", по индексам.
...
Рейтинг: 0 / 0
Чего-то я не понял с многопоточностью и cuncurrent-коллекциями
    #39048619
Webtester88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и второй вопрос, что делать, если мне надо как я сказал:
авторсколько угодно потоков добавляли данные в словарь там или в аналог List (вроде, это СoncurrentBag?), а другие потоки могли делать всякие Select, SelectMany и прочие линк-ништяки по этим коллекциям.

Или только вручную - фором по индексам?
...
Рейтинг: 0 / 0
Чего-то я не понял с многопоточностью и cuncurrent-коллекциями
    #39048620
Webtester88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Webtester88Ну и второй вопрос, что делать, если мне надо как я сказал:
авторсколько угодно потоков добавляли данные в словарь там или в аналог List (вроде, это СoncurrentBag?), а другие потоки могли делать всякие Select, SelectMany и прочие линк-ништяки по этим коллекциям.

Или только вручную - фором по индексам?
Я имею ввиду, когда элементы только добавляются и только в конец - т. е. без сортировок. Когда удаляются или при каждом добавлении происходит пересортировка коллекции - это более сложный случай и мне пока это не надо.
...
Рейтинг: 0 / 0
Чего-то я не понял с многопоточностью и cuncurrent-коллекциями
    #39048625
Webtester88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может, это какой-то бэд прэктис и этого надо избегать? Но я же ХОЧУ!

h ttps://www.youtube.com/watch?v=oR3PepX_ZOc&feature=youtu.be&t=56m45s
...
Рейтинг: 0 / 0
Чего-то я не понял с многопоточностью и cuncurrent-коллекциями
    #39048895
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Webtester88 А в чём смысла тогда смысла этих "защищённых" от многопотока коллекций?
В том, что можно использовать несколькими потоками одновременно, не беспокоясь о блокировках и том, что будет нарушено внутреннее состояние объекта.
И в том, что затраты на блокировки будут гораздо меньше, чем они были бы у абсолютного большинства коленочных реализаций.

P. S. сказано же, если обращаешься через реализуемые интерфейсы, в том числе методы расширения, то потокобезопасность не гарантирована. Нужен мгновенный слепок, используй ICollection.CopyTo, он намертво все лочит, когда создает копию.
...
Рейтинг: 0 / 0
Чего-то я не понял с многопоточностью и cuncurrent-коллекциями
    #39049667
Webtester88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мда, сложная штука. Думаешь, что разобрался в многопоточности и этих блокировках, но каждый раз всплывают нюансы. Получается, что смысла в многопотоке нет, если эти потоки активно юзают какой-то объект - приложение фактически работает как однопоточное, т. к. все потоки постоянно тормозятся и ждут друг друга. И делание мгновенных слепоков - это всё равно надо всем доступ обрубить, пока делаешь слепок. Т. е. смысла потом в этом слепке нет - проще заблокировать через lock, сделать нужные преобразования с объектом и потом разблокировать - без всякого слепка. Если преобразования занимают по времени меньше, чем создание копии, то смысла в слепках нет - проще блокировки применять. Я правильно понимаю?
...
Рейтинг: 0 / 0
Чего-то я не понял с многопоточностью и cuncurrent-коллекциями
    #39049669
Webtester88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Webtester88Если преобразования занимают по времени меньше, чем создание копии, то смысла в слепках нет - проще блокировки применять. Я правильно понимаю?
Я имею ввиду, кроме случая, когда нужна именно копия объекта. Т. е. мне нужна не копия, а нужно обновить состояние объекта или считать состояние объекта. Если эти операции занимают времени сравнимо с созданием копии или даже меньше - проще обойтись блокировками. Так?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Чего-то я не понял с многопоточностью и cuncurrent-коллекциями
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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