vbs цикл



Автор Virus219 biosoul задал вопрос в разделе Другие языки и технологии

как запустить несколько циклов do loop одновременно vbs и получил лучший ответ

Ответ от Axel[гуру]
VBS - язык скриптовый, то есть, по умолчанию с весьма урезанными возможностями, в частности, по части API. Поэтому многопоточность вряд ли на нём можно реализовать. Можно, конечно сделать скрипт, который будет формировать два других скрипта и запускать их - этим можно обеспечить два параллельных процесса. Но лучше взять любой язык, который может использовать WinAPI или имеет встроенные средства для работы с потоками.
Собственно, если не загружать мозг теорией, поток (Thread) на уровне кода это процедура, которая выполняется в фоновом режиме, независимо от остального кода.
Не сочтите за рекламу, но простой пример будте на PureBasic, будь он проклят:
A.i : B.i; Декларация пары integer переменных
;Процедура первого потока, увеличение значения переменной А на единицу и вывод её значения в текстовый контрол
Procedure ThreadA(Void)
Repeat
A + 1
SetGadgetText(0,Str(A))
ForEver
EndProcedure
;Процедура второго потока, увеличение значения переменной B на единицу и вывод её значения в текстовый контрол
Procedure ThreadB(Void)
Repeat
B + 1
SetGadgetText(1,Str(B))
ForEver
EndProcedure
;Создание окна и двух контролов
If OpenWindow(0,0,0,100,100,"",#PB_Window_ScreenCentered | #PB_Window_SystemMenu)
TextGadget(0,10,10,50,20,"0")
TextGadget(1,10,40,50,20,"0")
EndIf
;Создание двух потоков, в PB есть встроенные процедуры, в других языках, возможно, придётся написать пару строк для декларации, после чего также создавать два потока
CreateThread(@ThreadA(),0)
CreateThread(@ThreadB(),0)
;Дальше строки чисто для PB, не нужные в других визаульных языках, цикл для вывода окошка с контролами.
Repeat
If WindowEvent() = #PB_Event_CloseWindow
End
EndIf
ForEver
В общем, ничего особо сложного в этом нет.
Но, хочу подчеркнуть один важный момент - работа с потоками, это работа с процедурами, отвечающими за многозадачность ОС, прямая работа с памятью, которая, так скажем, имеет много подводных камней, которые могут спровоцировать неприятные сообщения типа "Память не может быть Read". В данном случае нет уничтожения или прерывания потоков, которые тоже могут быть нужны и тоже могут спровоцировать конфикты доступа к памяти.. .
Многие задачи, требующие на первый взгляд многопоточности, можно решить с помощью одного цикла, в теле которого идёт проверка так называемых "флагов", которые сигнализируют о том, что надо выполнить тот или иной блок операций. Поэтому смотрите по ситуации, если можно добиться нужного результата потратив больше времени ан кодинг, но не манипулируя памятью, я советую воспользоваться первым вариантом.

Ответ от Григорий Санду[гуру]
threads .

Ответ от Петрина Александр[гуру]
несколько одновременно? чтоб одновременно - это вам надо многопоточность делать.. . vbs на такое не способен (насколько мне известно)...

Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с похожими вопросами и ответами на Ваш вопрос: как запустить несколько циклов do loop одновременно vbs
 

Ответить на вопрос:

Имя*

E-mail:*

Текст ответа:*
Проверочный код(введите 22):*