Web Service очередь доступа к свободному объекту из списка

LTA

Доброе утро,Наверное простая задачка, но уже день как бьюсь, вот решил написатьВеб-сервис содержит статичный массив объектовpublic static object[20] gobject; элемент массива (gobject[i]) содержит объект, который можно использовать только в одном потокекак между методами веб-сервиса организовать очередь для получения доступа к свободному объекту из списка.Наверное можно использовать ThreadPool, но может быть несколько списков, которые не связаны между собой. Получается должно быть несколько очередей к каждому списку.
6 ответов

LTA

в .NET Framework 4 есть Потокобезопасные коллекциипосмотрите, может подойдёт


LTA

Большое спасибо...у меня есть еще один вопрос, очень давний:)есть схема сайта (программы), которая хранится в xml. Xml сериализуется в набор классов, которые хранят простые типы, контейнеры (ArrayList, HashTable, IList) и ссылки на другие объекты из этого xml.загружаю xml в статичный объект, методы веб сервиса используют этот объект с его содержимым только на чтение, без блокировки, на сколько такая реализация безопасна?загрузка делается один раз для ускорения работы, xml содержит порядка 10000 объектоввроде делал нагрузочный тест из 50 потоков, все проходит без ошибок.. на сервер пока не выкладывал :) активных пользователей не больше 100


LTA

вопрос на одновременный доступ.. без блокировки )


LTA

методы веб сервиса используют этот объект с его содержимым только на чтение, без блокировки, на сколько такая реализация безопасна?
На чтение конечно безопасно.P.S. Слишком часто статикой балуетесь - это зло, особенно в многопоточных задачах. Но если нужно глобализировать объект, разумнее будет использовать родное кеширования со всеми вытекающими отсюда вкусными плюшками. А так, мыслите верно - для оптимизации лучше сформировать объекты из xml и держать их в памяти.