Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
29 / 29 / 1
Регистрация: 01.10.2010
Сообщений: 171
.NET 4.x

Работа с несколькими потоками

22.09.2011, 13:45. Показов 2963. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
у меня вопрос, к тем кто работает с многопоточными приложениями
у меня алгоритм такой:
в основном потоке запускаю потоки в цикле
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
dim s as integer=0
sub main
            For i = 1 To 150
                Dim Threadcheck5 As New System.Threading.Thread(AddressOf Level1)
                Threadcheck5.Priority = Threading.ThreadPriority.BelowNormal
                Threadcheck5.Start(i)
            Next i
 
do until s<150
 Application.DoEvents()
loop
 
s=0
 
 For i = 1 To 150
      Dim Threadcheck5 As New System.Threading.Thread(AddressOf Level2)
      Threadcheck5.Priority = Threading.ThreadPriority.BelowNormal
      Threadcheck5.Start(i)
Next i
 
do until s<150
 Application.DoEvents()
loop
msgbox("готово")
 
end sub
sub level1(ByVal id As Object)
......
...
...
s+=1
end sub
sub level2(ByVal id As Object)
......
...
...
s+=1
end sub
Вопрос такой, когда запускается второй блок потоков, то потоки работают гораздо медленней, почему так происходит? заполняет ли память первый блок потоков?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.09.2011, 13:45
Ответы с готовыми решениями:

Не завершается процесс с несколькими потоками при закрытии окна
Как сделать, чтобы завершался процесс с несколькими потоками при закрытии главного окна, даже если эти потоки находятся в библиотеке...

работа с потоками
Возможно ли приостановить все потоки на заданное время из процедуры не из которых они были созданы и запущены?

Чтение из файла, запись в файл и работа с TList несколькими потоками
Есть задача, основная часть работы которой сводится к алгоритму: 1. Прочитать из текстового файла 1, 2 или 4 строки 2. Выделить из...

7
22.09.2011, 14:15

Не по теме:

hamele0n, потоки - это лишь видимость синхронной работы.

0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
22.09.2011, 14:30
hamele0n, если я не ошибаюсь, Application.DoEvents() - это скорее асинхронная модель выполнения, то есть этот метод выполняет все имеющиеся потоки, но в то же время какой квант времени выделяется и на выполнение других потоков, например, событий пользовательского интерфейса
1
29 / 29 / 1
Регистрация: 01.10.2010
Сообщений: 171
22.09.2011, 15:19  [ТС]
Цитата Сообщение от Eugene22 Посмотреть сообщение
hamele0n, если я не ошибаюсь, Application.DoEvents() - это скорее асинхронная модель выполнения, то есть этот метод выполняет все имеющиеся потоки, но в то же время какой квант времени выделяется и на выполнение других потоков, например, событий пользовательского интерфейса
без Application.DoEvents() форма может повиснуть, думаю что это никак не может влиять на скорость потоков которые запускаются во втором блоке, ведь в первом блоке работают с иной скоростью - быстрее
0
Заблокирован
22.09.2011, 16:11
hamele0n, попробуйте блокировать s во всех случаях обращения к ней таким образом:
VB.NET
1
2
3
4
Private Shared locker As New Object
SyncLock locker
   s+=1
End SyncLock
(модификаторы доступа произвольные, у меня они так, с другой проги)
и отпишите, что изменилось

Добавлено через 22 минуты
я так вижу ситуацию:

некоторые потоки срабатывают одновременно
и получается примерно так:
поток1: чему равно s?(10)
поток2: чему равно s?(10)
поток2: сделаю я s=10+1
поток1: сделаю я s=10+1
в итоге два потока отработало, а переменная изменилась на единицу
чем больше потоков, тем больше из них срабатывают одновременно

значит нужно блокировать потоком общий ресурс, когда поток с ним работает
0
29 / 29 / 1
Регистрация: 01.10.2010
Сообщений: 171
23.09.2011, 09:09  [ТС]
Dzhej-Dzhej, спасибо но твое пример помогает исключить ошибки, они у меня не возникают,хотя все равно твой метод реализовал для профилактики). Но вопрос ведь именно в скорости : почему первый блок потоков работает быстрее чем последний блок потоков. ДА кстати потоки обращаются к страницам сайта посредством HttpWebRequest, может они как то память заполняют?
0
Заблокирован
23.09.2011, 09:17
Цитата Сообщение от hamele0n Посмотреть сообщение
почему первый блок потоков работает быстрее чем последний блок потоков
потоки первого блока точно завершаются, когда начинают работать со второго?
Цитата Сообщение от hamele0n Посмотреть сообщение
HttpWebRequest
с этим не работал, возможно и заполняется оперативка, еще посмотрите на загрузку ЦП.
0
29 / 29 / 1
Регистрация: 01.10.2010
Сообщений: 171
23.09.2011, 09:23  [ТС]
Dzhej-Dzhej, да ведь второй блок начинает выполняться после того как s=150, т.е все потоки уже завершены. оперативку не много кушают, цП много, но первый блок занимает столько же ЦП что и остальные
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.09.2011, 09:23
Помогаю со студенческими работами здесь

Закачка файла несколькими потоками.
Кто знает, как на Java посылать на сервер HTML-запрос на скачивание части файла? Большая просьба привести пример.

Запись в файл несколькими потоками
Помогите решить задачу Создать k потоков, которые одновременно пишут в один и тот же файл символы: ...

Выигрышь в скорости с несколькими потоками?..
Программу (связана с рассчётом) написал в двух видах: последовательном и многопоточном.. В случае с одним потокм создаётся один класс...

Использование несколькими потоками одной функции
Есть вот такая функция для =которую выполняют рабочие потоки DWORD WINAPI ThreadFunc(void *pV) { Data* pD = (Data*)pV; int n,...

Запись данных в файл несколькими потоками.
Как на Java реализовать запись в файл несколькими потоками? К примеру, имеется файл размером 3Мб, его содержимое копируется в другой файл...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru