|   |   | 
| 
 | Как получить прогресс выполнения фонового задания в несколько потоков? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Бешеный заяц 06.11.20✎ 09:32 | 
        Собираюст массово грузить данные. планирую делать в несколько потоков,
 Как в цикле запустить фоновые задания передав туда пареметры знаю, а вот как выводить текущее состояние (процент выполнения о каждом из них?) насколько помню в БСП можно выводить прогресс только по одному фоновому заданию так как параметром ожиданием является сам объект (форма)? Уже думаю чтобы каждый поток генерировал свою HTML и писал текущее состояние... но это думаю не кошерно | |||
| 1
    
        mistеr 06.11.20✎ 09:35 | 
        Каждое задание пишет свой прогресс куда-нибудь в общедоступное место, например в РС, или в справочник типа СохраненныеНастройки.
 Ты читаешь и вычисляешь общий прогресс. | |||
| 2
    
        Dzenn гуру 06.11.20✎ 09:36 | 
        (1) присоединяюсь к идее. Просто выкидывай данные о прогрессе в общедоступное место, типа регистра сведений, например     | |||
| 3
    
        Бешеный заяц 06.11.20✎ 09:44 | 
        (1) (2) это конечно вариант, но боюсь запись отнимает время, котя как вариант писать не все подряд а раз в 50 отераций цикла     | |||
| 4
    
        mistеr 06.11.20✎ 10:15 | 
        (3) Конечно, только так. Даже не 50, а 100 или 1000, эквивалент нескольких секунд по времени.
 Точность тут не нужна. | |||
| 5
    
        H A D G E H O G s 06.11.20✎ 10:40 | 
        Через ВременноеХранилище и подключенный обработчик ожидания     | |||
| 6
    
        Вафель 06.11.20✎ 11:00 | 
        передавай не просто процент, а процент и номер потока номер потока принимай как параметр самого потока | |||
| 7
    
        Вафель 06.11.20✎ 11:00 | 
        то бишь придется руками повторить тот код бсп. но он не сложный сообщить - получить сообщения | |||
| 8
    
        fisher 06.11.20✎ 11:25 | 
        (7) +1
 БСП не использует лишние сущности. Фоновые просто выводят обычные сообщения, которые накапливаются в буфере вывода (т.к. их некому показывать), но которые можно вычитывать из основного потока. В принципе, через этот механизм можно реализовать асинхронное чтение почти любых данных из фонового задания. | |||
| 9
    
        Вафель 06.11.20✎ 11:28 | 
        (8) это офф. механизм общения между потоками. Единственное, что сообщения доставляются негарантированно | |||
| 10
    
        fisher 06.11.20✎ 13:13 | 
        (9) "Офф." - в смысле, официальный? :)
 Я бы сказал, что это случайная фича, просто пришедшаяся ко двору. И "узаконенная" фактом применения в типовых. На человеческий механизм общения между потоками, особенно с учетом фичи негарантированной доставки, это даже в третьем приближении не тянет. | |||
| 11
    
        H A D G E H O G s 06.11.20✎ 13:19 | 
        (10) Это жертвы мертворожденного кластера 1С.     | |||
| 12
    
        Вафель 06.11.20✎ 13:20 | 
        (10) ну раз в БСП применяют - значит официальный     | |||
| 13
    
        fisher 06.11.20✎ 13:45 | 
        (12) Значит когда выпилят - станет неофициальный.     | |||
| 14
    
        fisher 06.11.20✎ 13:49 | 
        (5) "Данные, помещенные во временное хранилище в фоновом задании, не будут доступны из родительского сеанса до момента завершения фонового задания"     | |||
| 15
    
        ДенисЧ 06.11.20✎ 13:51 | 
        (10) официальная тоже есть. Правда, за отдельные деньги.     | |||
| 16
    
        fisher 06.11.20✎ 13:58 | 
        (15) Вот не начинай. Закрыть острую потребность в банальных серверных пушах через свистопердельный звездолет с постгрями и хезелкастами, где это составляет 0.01% возможностей - это издевательство над разработчиками.     | |||
| 17
    
        ДенисЧ 06.11.20✎ 14:01 | 
        (16) Вроде они как-то оправдывались несделанием обратного вызова... Правда, не помню, чем...     | |||
| 18
    
        fisher 06.11.20✎ 14:02 | 
        (17) Не, я могу придумать оправдания в том смысле, что это действительно не совсем тривиальная задача для общего случая. Но ответ Чемберлена все равно убивает.     | |||
| 19
    
        ДенисЧ 06.11.20✎ 14:19 | 
        (18) Не знаю, что там говорил лорд Невилл по поводу 1с.. (
 Неграмотен | |||
| 20
    
        NWsFF 06.11.20✎ 14:23 | 
        (0) "Не нужна вам такая машина пацаны" (С) Бумер 2
 Но добавлю извращенных вариантов, используй "систему взаимодействия" | |||
| 21
    
        fisher 06.11.20✎ 14:23 | 
        "Чемберлену"
 "наш ответ Чемберлену" | |||
| 22
    
        stopa85 06.11.20✎ 14:25 | 
        Есть ещё вариант.
 Нужно загрузить 1000000 файлов. Запускаешь 20 потоков, каждый грузит по 1000файло. Ожидаешь завершения потоков (одновременно все не завершатся). Один завершился, запускаешь ещё один, уведомляешь % выполнения т.д. Схема более совершенна (например можно регулировать количество потоков динамически, ничего никуда писать не нужно. Если словил деадлок можно перезапустить загрузку автоматом и т.д.) но сильно сложнее в реализации. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |