|
Поговорим об "асинхронности" клиента 1С | ☑ | ||
---|---|---|---|---|
0
Mr_Best
13.12.18
✎
12:52
|
Доброго дня уважаемые коллеги !
Кто знает как работает асинхронность клиента 1С или даст ссылочку ? Не путать с асинхронными вызовами и фоновыми заданиями. Речь исключительно о клиенте ! Т.е. о ПодключитьОбработчикОжидания и Новый ОписаниеОповещения. Собственно, приведу пример для большего понимания: 1. Есть управляемая форма, не важно какая, пусть будет общая. 2. В ней есть реквизит типа Число, имя его "Счетчик". Реквизит отображен на форме через элемент управления "Поле ввода". 3. Есть процедура "УвеличитьСчетчик", которая делает Счетчик = Счетчик + 1 4. И мы запускаем чрез ПодключитьОбработчикОжидания 10 процедур "УвеличитьСчетчик" с интервалом в 1 секунду. 5. Вопрос, что будет в переменной Счетчик через 60 секунд ? Дело в том, что в настоящем асинхронном программировании, результат будет не предсказуем. Что бы результат был предсказуем, реквизит "Счетчик" пришлось бы блокировать на чтение в каждом из 10 обработчиков. 1С накладывает такую блокировку ? |
|||
1
Fragster
гуру
13.12.18
✎
12:53
|
(0) >Поговорим о "асинхронности" клиента 1С
все в порядке, её нет |
|||
2
Fragster
гуру
13.12.18
✎
12:53
|
>Дело в том, что в настоящем асинхронном программировании, результат будет не предсказуем. Что бы результат был предсказуем, реквизит "Счетчик" пришлось бы блокировать на чтение в каждом из 10 обработчиков.
нет |
|||
3
Mr_Best
13.12.18
✎
12:54
|
(2) что нет ?
|
|||
4
Mr_Best
13.12.18
✎
12:56
|
(2) если вы про то, что результат будет предсказуем, то вы ошибаетесь.
|
|||
5
dezss
13.12.18
✎
12:58
|
(0) в чем проблема проверить и результат сюда запостить?
|
|||
6
Mr_Best
13.12.18
✎
13:02
|
Например браузер использует тоже псевдо-асинхронность, там может выполнятся код на JS асинхронно, но любая операция с DOM-деревом будет синхронна. Т.е. если я буду расчитывать данные на клиенте 10 секунд без обращения к DOM-дереву, этот расчет будет выполнен действительно асинхронно, а когда по окончанию расчета я буду выводить данны в DOM-дерево, будет синхронный вызов. Так же, обратные вызовы в движке браузеров стоят в очереди. У меня есть понимание как работает "асинхронность" в браузере, но нет понимание как это устроено в клиенте 1с. Кто нибудь шарит ?
|
|||
7
Mr_Best
13.12.18
✎
13:05
|
(5) а если непредсказуемый результат проявит себя на 1001 итерации проверки ? а я проверю только 5 раз ...
Тут нужно понимание как работает клиент, у меня есть подозрения, что клиент работает так же как браузер. Но я не уверен, надеюсь кто нибудь знает |
|||
8
palsergeich
13.12.18
✎
13:08
|
ОбработчикОжидания - простой таймер окна.
|
|||
9
toypaul
гуру
13.12.18
✎
13:12
|
интересно как ты собрался 10 раз обработчик запустить
|
|||
10
palsergeich
13.12.18
✎
13:15
|
Обработчик внутри одного окна уникален по имени.
|
|||
11
palsergeich
13.12.18
✎
13:16
|
если дать 10 разных имен то запросто.
|
|||
12
toypaul
гуру
13.12.18
✎
13:17
|
даже если повторить 10 разных имен, то все они друг за дружкой выполнятся
|
|||
13
Сияющий в темноте
13.12.18
✎
13:51
|
нет никакой асинхронности и паралелльного исполнения,все функции выполняются последовательно одним потоком,просто,обработчик срабатывает,когда ничего не выполняется,и пока он работает,другой не запустится.
В файловой версии для фоновых заданий сделан отдельный поток,но только для фоновых. |
|||
14
Fragster
гуру
13.12.18
✎
13:54
|
(4) не путайте многопоточность и асинхронность
|
|||
15
Сияющий в темноте
13.12.18
✎
13:55
|
настоящая асинхронность,это когда CreateThread или Fork,чего в 1с пока нету(а очень бы хотелось)
и,вы путаете асинхронность и многопоточность,асинхронность предполагвет выполнение других действий,с котом не связанных с событием при завершении. |
|||
16
Сияющий в темноте
13.12.18
✎
13:55
|
с кодом ...
|
|||
17
H A D G E H O G s
13.12.18
✎
13:59
|
(0) 600 будет
|
|||
18
H A D G E H O G s
13.12.18
✎
14:00
|
В многопотоке будет что угодно, но возле 600
|
|||
19
H A D G E H O G s
13.12.18
✎
14:00
|
Если пользовать мьютексы (ну или че там у вас счаст модно) - то 600
|
|||
20
Mr_Best
13.12.18
✎
14:04
|
(10) проверил))) верно
|
|||
21
dezss
13.12.18
✎
14:34
|
(0) ты не с той стороны зашел, ИМХО.
Скорей надо смотреть в сторону фоновых заданий, вот только не понятно, что именно они должны менять, так как выполняться они будут в разных областях памяти, ИМХО (изменение чего-то в базе не рассматриваем, так как там один фиг будут блокировки). |
|||
22
Mr_Best
13.12.18
✎
14:35
|
Значит, если подвести итоги, то любое действие на клиенте, включая ВнешнееСобытие будет становится в очередь и обрабатыватся последовательно.
Т.е. другими словами, движок клиента 1с работает аналогично движку любого браузера. |
|||
23
Сияющий в темноте
13.12.18
✎
18:24
|
Как и любая другая программа с одним основным потоком.
|
|||
24
palsergeich
13.12.18
✎
19:15
|
(12) Совершенно верно, поток то один.
Но таймеров может быть много. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |