Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Потоки и объекты из Collections.Generic 
V
    Опции темы
imm
Дата 8.6.2009, 05:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 27.7.2005

Репутация: нет
Всего: 1



Вопрос такой.

Являются ли операции вставки/удаления из объектов классов System.Collection.Generic атомарными?
Или при реализации многопоточности нужно каждую модификацию объектов обворачивать в lock?

ps. Немного offtop, но нехотел создавать похожую тему рядом. Нужно ли обворачивать в lock использование переменных простых типов, например int или bool?

За ранее благодарен.

Это сообщение отредактировал(а) imm - 8.6.2009, 05:43
PM MAIL WWW ICQ   Вверх
Raistlin
Дата 8.6.2009, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 19.5.2009

Репутация: нет
Всего: нет



Цитата(imm @  8.6.2009,  05:33 Найти цитируемый пост)
Нужно ли обворачивать в lock использование переменных простых типов, например int или bool?

В общем случае, зависит от использования:

Код

int a = 0;
int b = 0;

a = 3; //одна операция
a += b; //чтение + запись = неатомарная


Это сообщение отредактировал(а) Raistlin - 8.6.2009, 08:57
PM MAIL   Вверх
imm
Дата 8.6.2009, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 27.7.2005

Репутация: нет
Всего: 1



Ага, понятно.

А что насчет объектов классов System.Collections.Generic, являются ли их операции атомарными?
PM MAIL WWW ICQ   Вверх
Bladerender
Дата 9.6.2009, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 19.7.2007

Репутация: нет
Всего: нет



Если Вы о том, можно ли делать паралельно вставку (удаление) в коллекцию елементов из разных потоков, включительно с ситуацией, что это может быть сделано одновременно, то можно. Проверял. Но я делал доступ по индексам, а не одновременно делал Адд и Ремув[счетчик-1]
PM MAIL   Вверх
imm
Дата 9.6.2009, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 27.7.2005

Репутация: нет
Всего: 1



Я согласен с тобой Bladerender, я тоже пробовал запускать много потоков и делать операции вставки/удаления и все было ок, но никто не гарантирует, что в дальнейшем у всех и всегда эта прога будет работать именно так. В общем хотелось бы узнать именно является ли операции стандартных коллекций атомарными или нет?
PM MAIL WWW ICQ   Вверх
PashaPash
Дата 9.6.2009, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



imm, в общем случае - нет. для каждого класса в MSDN есть секция Thread Safety, где подробно описаны конкретные особенности.


--------------------
PM MAIL WWW   Вверх
Partizan
Дата 9.6.2009, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



imm, а в msdn на предмет thread safety инфы по классам чтоли нет?


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
imm
Дата 9.6.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 86
Регистрация: 27.7.2005

Репутация: нет
Всего: 1



В msdn, а в google тем более точно есть все. И если бы люди обращались вначале туды, то на этом форуме небыло бы постов. В форум люди идут за ответом на конкретный вопрос и если его получают потом иду снова и снова, таким образом живут и развиваются и становлятся интересными ресурсы. Зачем говорить, что вы знаете что это есть в msdn, если знаете помогите, вам будут очень благодарны. Зачастую у людей нет времени что бы разбираться в поставленном вопросе во всей его полноте, либо присутствуют языковые преграды.

Но все равно спасибо PashaPash за ответ, он меня устроил.
Спасибо за внимание.
PM MAIL WWW ICQ   Вверх
PashaPash
Дата 10.6.2009, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1233
Регистрация: 3.1.2008

Репутация: 13
Всего: 49



imm
MSDN есть на русском - языковые преграды - отмазка.
Есть очень много вопросов, ответов на которые нет в MSDN, или есть, но не в явном виде. Вот их и надо постить на форум smile


--------------------
PM MAIL WWW   Вверх
Pankon
Дата 17.6.2009, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 739
Регистрация: 2.6.2005

Репутация: 3
Всего: 5



Добиться атомарности в некоторых случаях помогает Interlocked.

Атомарность и Interlocked
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0737 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.