Последние записи
- Получение ProductKey установленной Windows
- Как парсить https сайт ?
- Смена регистра строки текста на BAT (CMD)
- Вывод разноцветного текста на BAT (CMD)
- Узнать дату окончания сертификата
- Как создать полноценный сайт на Open Server
- Получить температуру процессора на bat-файлах
- Динамические массивы в Lazarus / Delphi — индексация элементов
- Многозадачность на бат-файлах
- Дата и время изменения файла
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
17th
Ноя
Многозадачность на бат-файлах
Posted by obzor under Windows
Для реализации некоторого параллельного программирования в CMD можно использовать такую команду:
start /b имя.cmd
Параметр /b позволяет запустить скрипт имя.cmd в том же консольном окне, при этом основная программа продолжает выполнение, а имя.cmd работает совместно, разделяя с ней потоки ввода-вывода.
Вот такой пример. Батник main.cmd:
@echo off
setlocal enabledelayedexpansion
cls
set test_var=Hello, second
start /b second.cmd
FOR /L %%i IN (0,1,10) DO (
echo Thread_1: %%i
timeout /t 1 >nul
)
set test_var=Goodby, second
echo Thread_1 ending
Батник second.cmd:
@echo off
echo %test_var%
FOR /L %%i IN (0,1,10) DO (
echo Thread_2: %%i
timeout /t 2 >nul
)
echo Thread_2 ending
echo %test_var%
Виден параллельный вывод в одну и туже консоль. При этом имеется возможность «передать» все данные из основной программы в параллельный поток. В примере это переменная test_var. Однако в second.cmd создается лишь ее копия, то есть не получится менять значение переменной одного потока из другого.
Если все же надо наладить взаимодействие двух потоков, то придется использовать общий файл.
Где можно использовать на практике?
Например, команда choice не просто считывает нажатую клавишу, но и останавливает выполнение до того, пока пользователь не нажмет клавишу. Если нам надо отслеживать нажатые клавиши, при этом не тормозить основной поток, то обработку клавиатуры можно вынести в отдельный поток. Например:
@echo off
:loop
choice /c YN /n /cs
echo %errorlevel% > input.txt
goto loop
Нажатая клавиша окажется в файле input.txt (точнее ее порядковый номер в списке). От туда основной поток в нужный момент может произвести чтение, не останавливая своей работы на ожидание нажатия клавиши.
Это лишь один пример, можно придумать и другие способы применения подобной многопоточности.
Случайные статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту

пеллетные котлы

Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)


