powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проблема с многопоnочностью vb.net
10 сообщений из 10, страница 1 из 1
Проблема с многопоnочностью vb.net
    #39174347
Donotlie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток. Я создаю многопоточную программу. У меня возникла такая проблема - Есть список с которым работает моя программа. Я не знаю как сделать так, что бы все потоки брали из этого списка строки по очереди и не пропускали их и не брали одни и те же.

Заранее спасибо!

Модератор: Тема перенесена из форума "Visual Basic".
...
Рейтинг: 0 / 0
Проблема с многопоnочностью vb.net
    #39174482
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Donotlie,

Попробуй использовать ConcurrentQueue. У неё методы безопасны для многопоточной работы. Или вручную самому следить, тогда использовать SyncLock
...
Рейтинг: 0 / 0
Проблема с многопоnочностью vb.net
    #39174648
Donotlie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
VSVLAD, Спасибо. Интересный вариант. А есть какой мануал по ConcurrentQueue? А то на msdn не могу разобраться в написанном. Буду очень благодарен.
...
Рейтинг: 0 / 0
Проблема с многопоnочностью vb.net
    #39174690
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DonotlieVSVLAD, Спасибо. Интересный вариант. А есть какой мануал по ConcurrentQueue? А то на msdn не могу разобраться в написанном. Буду очень благодарен.
Я опечален.
...
Рейтинг: 0 / 0
Проблема с многопоnочностью vb.net
    #39174700
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Donotlie, поверь, тебе рано создавать многопоточные программы. Оставь многопоточность на потом, там столько проблем что сходу не описать, и надо все сразу уметь обойти. Освой пока все остальное.
...
Рейтинг: 0 / 0
Проблема с многопоnочностью vb.net
    #39174711
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И почитай про Закон Амдала , отрезвляет после маркетинга многопоточности .NET
Ускорять надо алгоритмами, а не надеяться на то что лишние ядра проца ускорят твой тормозной код.

Есть хороший анекдот: "Один землекоп выкопает яму метр Х метр Х метр за час, за сколько выкопают эту яму 600 землекопов?" Реши и представь как уместить 600 человек вокруг одного квадратного метра и чтобы они копали не мешая друг-другу. Это и есть многопоточность.
...
Рейтинг: 0 / 0
Проблема с многопоnочностью vb.net
    #39174727
Donotlie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, Спасибо за заботу) Алгоритм работает хорошо и с одним потоком, а если 25 потоков ставить, то время затрачивается гораздо меньше. При маленьких объёмах работы на это пофиг, но когда нужно выполнить по самые не балуй это очень положительно сказывается.

P.S. Делал кустарным способом и по этому из 100 строк проходило 95-99
...
Рейтинг: 0 / 0
Проблема с многопоnочностью vb.net
    #39174744
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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/
...
Рейтинг: 0 / 0
Проблема с многопоnочностью vb.net
    #39174749
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С ConcurrentQueue все просто:

добавить в очередь:
Код: c#
1.
MyConcurrentQueue.Enqueue(MyValue)


извлечь
Код: c#
1.
2.
3.
4.
5.
6.
MyType MyValue;
if(MyConcurrentQueue.TryDequeue(out MyValue)) {
   ... обработка MyValue
} else {
 // очередь пуста
}


но тут надо правильно обработать "очередь пуста", встать на ожидание события или завершить поток. Это и есть те самые трудности... читай книжки. Умнее станешь.
...
Рейтинг: 0 / 0
Проблема с многопоnочностью vb.net
    #39177073
Donotlie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima T, Спасибо! Теперь разобрался. 100 строк из 100)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Проблема с многопоnочностью vb.net
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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