powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / BlockingCollection + Dictionary. Есть ?
3 сообщений из 3, страница 1 из 1
BlockingCollection + Dictionary. Есть ?
    #38566757
MsSql_Study
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ищу структуру для хранения данных. Не хочется писать свой велосипед :)

Нечто похожее на BlockingCollection + Dictionary.
BlockingCollection блокирует при попытке получить данные, если в списке ничего нет - но мне нужно, чтобы это происходило по Ключу.

Т.е. несколько потоков ждут данные для себя. Данные должны упасть в некий общий список.

Каждый поток проверяет наличие определенного ключа.Это Dictionary.
Но также, хотелось бы, чтобы не было бессмысленных Sleep(50) в ожидании того, как придут данные. Хотелось бы блокировать поток на время ожидания, чтобы он не шелестел зря винчестером. Это BlockingCollection.

Встречали ли вы такую реализацию ?

гуглинг вывел на похожий вопрос
http://stackoverflow.com/questions/10736209/how-to-wrap-concurrentdictionary-in-blockingcollection

Но, там предлагается таки писать свой велосипед.
...
Рейтинг: 0 / 0
BlockingCollection + Dictionary. Есть ?
    #38566801
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MsSql_Study,

Код: c#
1.
Т.е. несколько потоков ждут данные для себя



А не лучше ли запускать потоки, если ключ пришел?
...
Рейтинг: 0 / 0
BlockingCollection + Dictionary. Есть ?
    #38567741
MsSql_Study
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LelouchА не лучше ли запускать потоки, если ключ пришел?

К сожалению так просто не получится )

Потоки друг о друге ничего не знают.

Первые ставят задачу, идентифицируя их уникальным ID.
Вторые получают задачи, но от третьих потоков :)

Первый и вторые никак не связанные и друг друга не знаю. Я решил, что самым простым вариантом будет глобальный статический Dictionary - где будет идентификатор работы и результат.

Единственно хотелось лишь избежать, чтобы первые потоки не висели в бесконечном цикле по 100 мс, проверяя "ну когда там будет ответ ?". Хотелось блокировки как в BlockingCollection.


Ладно. Сделаю какой-нибудь велосипед. будет Dictionary <Key, BlockingCollection>.
Все желаюшие будут получать по ключу блокирующую коллекцию, и уже висеть на ней сколько хотят :)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / BlockingCollection + Dictionary. Есть ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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