Related Posts
- Получение логина и пароля техподдержки 1С из базы
- Класс для вывода отчета в Excel
- Счет-фактура для УПП
- Библиотека классов для создания внешней компоненты 1С на C#
- Акт об оказании услуг (со скидками) — внешняя печатная форма для Управление торговлей 11.1.10.86
- Прайс-лист с артикулом в отдельной колонке
А sleep в oneScript’е есть? А то без него управление многопоточными вычислениями мягко говоря ущербно…
(1)sleep есть, называется Приостановить. Честно говоря и без sleep ничего ущербного не вижу. Если не секрет -зачем создавать поток и стоить его?
(2)стоить -> стопить
(4) Понятно. Можно в самом потоке, при завершении инициировать новый поток, если остались данные для обработки.
(5)
Тогда это не параллельность, а последовательное выполнение. Смысл теряется…
(6) Ну почему же, Вы можете сделать столько потоков, сколько элементов данных, подлежащих обработке (по крайней мере несколько, если у Вас некий пул), также, как Вы делаете в цикле, только в самих потоках.
(7) а микросекундный sleep есть?
(8)Думаю — нет, ведь и Linux и Windows не ОС реального времени, в Windows квант времени ~10-20 миллисекунд, поэтому даже если написать Sleep(1), то задержка будет > 1 мс.
(8) А если не секрет, зачем Вам такие малые задержки?
(8) Вот есть к примеру такая реализация микросекундного таймераhttps://www.codeproject.com/Articles/98346/Microsecond-and-Millisecond-NET-Timer , которую не сложно перенести, однако, как отмечает сам автор, если использовать в не real-time ОС, периодически интервалы будут неверными.
(11) периодические интервалы тут не особо критичны. Фактически если у Вас N заданиий, которые обрабатывают по M блоков, то массив из Х блоков они обработают за Х/M/N раз. При том если элемент данных обрабатывается за разное время, то некоторые блоки должны будут обработаться раньше, чем другие, и ДождатьяЗавершения будет ждать самый долгообрабатываемый блок. Для того, чтобы загрузить новые процессы данными, нужно их стартануть с новым массивом обрабатываемой информации. Если ждать секунду (как в 1С, когда народ юзает «ping localhost»), то за секунду можно некоторое количество элементов уже обработать. Поэтому хорошо бы ждать 1/10-ю секунды, например. И на сколько это в миллисекундах точно — второй вопрос, главное чтобы в это время процессор просто ждал…
(12)
Ну 1/10 секунды — это 100 миллисекунд, что вполне нормально и для Sleep, который уже есть. И это будет действительно приостановка выполнения. Вот описание метода, который реализует Sleep в OneScripthttps://msdn.microsoft.com/ru-ru/library/system.threading.thread.sleep(v=vs.110).aspx
Моя изначальная мысль была в том, что можно запускать потоки для обработки новых порций данных из самих потоков, примерно так:
Показать