|
Проблема с многопоnочностью vb.net
|
|||
---|---|---|---|
#18+
Доброго времени суток. Я создаю многопоточную программу. У меня возникла такая проблема - Есть список с которым работает моя программа. Я не знаю как сделать так, что бы все потоки брали из этого списка строки по очереди и не пропускали их и не брали одни и те же. Заранее спасибо! Модератор: Тема перенесена из форума "Visual Basic". ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 15:21 |
|
Проблема с многопоnочностью vb.net
|
|||
---|---|---|---|
#18+
Donotlie, Попробуй использовать ConcurrentQueue. У неё методы безопасны для многопоточной работы. Или вручную самому следить, тогда использовать SyncLock ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 16:28 |
|
Проблема с многопоnочностью vb.net
|
|||
---|---|---|---|
#18+
VSVLAD, Спасибо. Интересный вариант. А есть какой мануал по ConcurrentQueue? А то на msdn не могу разобраться в написанном. Буду очень благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 18:36 |
|
Проблема с многопоnочностью vb.net
|
|||
---|---|---|---|
#18+
DonotlieVSVLAD, Спасибо. Интересный вариант. А есть какой мануал по ConcurrentQueue? А то на msdn не могу разобраться в написанном. Буду очень благодарен. Я опечален. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 19:09 |
|
Проблема с многопоnочностью vb.net
|
|||
---|---|---|---|
#18+
Donotlie, поверь, тебе рано создавать многопоточные программы. Оставь многопоточность на потом, там столько проблем что сходу не описать, и надо все сразу уметь обойти. Освой пока все остальное. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 19:18 |
|
Проблема с многопоnочностью vb.net
|
|||
---|---|---|---|
#18+
И почитай про Закон Амдала , отрезвляет после маркетинга многопоточности .NET Ускорять надо алгоритмами, а не надеяться на то что лишние ядра проца ускорят твой тормозной код. Есть хороший анекдот: "Один землекоп выкопает яму метр Х метр Х метр за час, за сколько выкопают эту яму 600 землекопов?" Реши и представь как уместить 600 человек вокруг одного квадратного метра и чтобы они копали не мешая друг-другу. Это и есть многопоточность. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 19:28 |
|
Проблема с многопоnочностью vb.net
|
|||
---|---|---|---|
#18+
Dima T, Спасибо за заботу) Алгоритм работает хорошо и с одним потоком, а если 25 потоков ставить, то время затрачивается гораздо меньше. При маленьких объёмах работы на это пофиг, но когда нужно выполнить по самые не балуй это очень положительно сказывается. P.S. Делал кустарным способом и по этому из 100 строк проходило 95-99 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 19:54 |
|
Проблема с многопоnочностью vb.net
|
|||
---|---|---|---|
#18+
DonotlieDima T, Спасибо за заботу) Алгоритм работает хорошо и с одним потоком, а если 25 потоков ставить, то время затрачивается гораздо меньше. У тебя есть 25 ядер в процессоре? Если ядер 4 то обычно самое эффективное 5-6 потоков, дальше начинается спад производительности из-за частого переключения контекста, 25 потоков на 4 ядрах это как те 600 землекопов. Не знаю стоит ли тебя далеко к основам отсылать, но советую почитай Рихтера http://www.ozon.ru/context/detail/id/4079733/ http://www.ozon.ru/context/detail/id/21236101/ ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 20:25 |
|
Проблема с многопоnочностью vb.net
|
|||
---|---|---|---|
#18+
С ConcurrentQueue все просто: добавить в очередь: Код: c# 1.
извлечь Код: c# 1. 2. 3. 4. 5. 6.
но тут надо правильно обработать "очередь пуста", встать на ожидание события или завершить поток. Это и есть те самые трудности... читай книжки. Умнее станешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.02.2016, 20:35 |
|
|
start [/forum/topic.php?fid=20&msg=39174347&tid=1400783]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 158ms |
0 / 0 |