Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
19.02.2014, 20:08
|
|||
---|---|---|---|
|
|||
BlockingCollection + Dictionary. Есть ? |
|||
#18+
Ищу структуру для хранения данных. Не хочется писать свой велосипед :) Нечто похожее на BlockingCollection + Dictionary. BlockingCollection блокирует при попытке получить данные, если в списке ничего нет - но мне нужно, чтобы это происходило по Ключу. Т.е. несколько потоков ждут данные для себя. Данные должны упасть в некий общий список. Каждый поток проверяет наличие определенного ключа.Это Dictionary. Но также, хотелось бы, чтобы не было бессмысленных Sleep(50) в ожидании того, как придут данные. Хотелось бы блокировать поток на время ожидания, чтобы он не шелестел зря винчестером. Это BlockingCollection. Встречали ли вы такую реализацию ? гуглинг вывел на похожий вопрос http://stackoverflow.com/questions/10736209/how-to-wrap-concurrentdictionary-in-blockingcollection Но, там предлагается таки писать свой велосипед. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
19.02.2014, 21:06
|
|||
---|---|---|---|
BlockingCollection + Dictionary. Есть ? |
|||
#18+
MsSql_Study, Код: c# 1.
А не лучше ли запускать потоки, если ключ пришел? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.02.2014, 16:09
|
|||
---|---|---|---|
|
|||
BlockingCollection + Dictionary. Есть ? |
|||
#18+
LelouchА не лучше ли запускать потоки, если ключ пришел? К сожалению так просто не получится ) Потоки друг о друге ничего не знают. Первые ставят задачу, идентифицируя их уникальным ID. Вторые получают задачи, но от третьих потоков :) Первый и вторые никак не связанные и друг друга не знаю. Я решил, что самым простым вариантом будет глобальный статический Dictionary - где будет идентификатор работы и результат. Единственно хотелось лишь избежать, чтобы первые потоки не висели в бесконечном цикле по 100 мс, проверяя "ну когда там будет ответ ?". Хотелось блокировки как в BlockingCollection. Ладно. Сделаю какой-нибудь велосипед. будет Dictionary <Key, BlockingCollection>. Все желаюшие будут получать по ключу блокирующую коллекцию, и уже висеть на ней сколько хотят :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=20&tablet=1&tid=1403224]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 139ms |
0 / 0 |