работа в многопотоке ZennoDroid Enterprise

lamar015

Client
Регистрация
22.08.2021
Сообщения
23
Благодарностей
4
Баллы
3
Приветствую!

Работаю в многопотоке, софт - ZennoDroid Enterprise. Подключены несколько телефонов, в среднем, 6-7 штук. Примечательно, что даже в случае, когда какой-то телефон уже работает в одном из потоков, если на другом потоке запустить экшен "Получить список устройств", то этот телефон все равно будет отображаться как свободный. Как следствие, возникает купа ошибок, из-за того, что новые потоки пытаются подключить к устройству, которое уже работает.

Как можно реализовать функционал, чтобы разные потоки не брали одно и то же устройство? Возможно, его можно как-то обозначить, как занятое?
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
488
Благодарностей
381
Баллы
63
Экшен "Выбор устройства" при рандомном выборе или выборе по маске игнорирует занятые устройства.
Устройства, которые используются другими потоками, выбираться не будут.

Экшен "Получить список устройств" выдает список всех девайсов.
 
  • Спасибо
Реакции: lamar015
Регистрация
23.12.2014
Сообщения
673
Благодарностей
219
Баллы
43
Самый стабильный вариант это на каждый смартфон запускать отдельную копию + к этому наглядно видно какой смартфон как отрабатывает ту или иную задачу
 

lamar015

Client
Регистрация
22.08.2021
Сообщения
23
Благодарностей
4
Баллы
3
Экшен "Выбор устройства" при рандомном выборе или выборе по маске игнорирует занятые устройства.
Устройства, которые используются другими потоками, выбираться не будут.

Экшен "Получить список устройств" выдает список всех девайсов.
то что было нужно, работает, спасибо
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 950
Благодарностей
774
Баллы
113
@Anatoly79
У меня сейчас 2 устройства подключены, выбираю в дройде только одно по имени, другое не трогаю.
Но при этом почему-то проект запускается то на одном, то на другом, считай поочередно.
Почему так может быть?
 
Регистрация
23.12.2014
Сообщения
673
Благодарностей
219
Баллы
43
У меня все это более года в переменных и вводных настройках, работает на ура:ah:
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
488
Благодарностей
381
Баллы
63
Регистрация
23.12.2014
Сообщения
673
Благодарностей
219
Баллы
43
никакой код не нужен
110688
110689

Лучше в отдельном подпроекте делать, новый шаблон писать проще
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 950
Благодарностей
774
Баллы
113
Очень странно.
Каким образом происходит выбор девайса? Если через c#, то нужен код.
Вообще ничего сверх нету - все банальное.
"Возможно" - оно неправильно может воспринимать переменную и считать что там может быть не имя, а 0|1, хотя это из пальца наполовину высасоное мнение...
110690

110692
 
Регистрация
23.12.2014
Сообщения
673
Благодарностей
219
Баллы
43
Вообще ничего сверх нету - все банальное.
"Возможно" - оно неправильно может воспринимать переменную и считать что там может быть не имя, а 0|1, хотя это из пальца наполовину высасоное мнение...
Посмотреть вложение 110690
Посмотреть вложение 110692
Переключи на Regex
 
  • Спасибо
Реакции: Iv1

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 950
Благодарностей
774
Баллы
113
Экшен "Выбор устройства" при рандомном выборе или выборе по маске игнорирует занятые устройства.
Устройства, которые используются другими потоками, выбираться не будут.

Экшен "Получить список устройств" выдает список всех девайсов.
Он не очень то игнорирует.
Т.е. если несколько устройств, и, например, одно из них перезагрузилось, то в момент инициализации оно же ТИПА свободное и в этом момент его может перехватить другой поток и получается бред))
Потому лучше рандомным выбором вообще не пользоваться. Потому что это настоящий рандом будет со всеми вытекающими :az:
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
488
Благодарностей
381
Баллы
63
то в момент инициализации
Устройство помечается занятым в момент Выбора (т.е. до каких-либо действий с девайсом). (Происходит это в локе: Выбор -> Занято). Ни один поток не может занять девайс, который выбран другим потоком.


"Возможно" - оно неправильно может воспринимать переменную и считать что там может быть не имя, а 0|1, хотя это из пальца наполовину высасоное мнение...
Предлагаю для теста перед экшеном Выбор, добавить экшен Вывод сообщения вида "Сейчас будет выбрано устройство {-Variable.Droid_phone-}".
В сам экшен Выбор добавить сохранение выбранного девайса ("Положить имя в переменную" - создать новую переменную).
И после Выбора выводить название выбранного телефона. Вот если выбиралось одно, а выбралось другое, то это баг.
 
Последнее редактирование:

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 950
Благодарностей
774
Баллы
113
Устройство помечается занятым в момент Выбора (т.е. до каких-либо действий с девайсом). (Происходит это в локе: Выбор -> Занято). Ни один поток не может занять девайс, который выбран другим потоком.
Значит у меня аномалия)
у меня одно и то же устройство может из PM сам droid перехватить, что час назад даже было, когда тестировал :az:
 

Anatoly79

Moderator
Регистрация
17.04.2020
Сообщения
488
Благодарностей
381
Баллы
63

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 950
Благодарностей
774
Баллы
113
Еще вопрос.
Когда одно и то же устройство перезагружается, то этот же поток начинает писать
110693

Как ему сказать что ты прямо с ним и работал до перезагрузки?
В PM, почему-то, такой проблемы нет.
 

Iv1

Client
Регистрация
21.02.2016
Сообщения
1 950
Благодарностей
774
Баллы
113
Забавный момент...
1. Если выбрать устройство по имени и перезагрузить, то по имени этому же оно будет занято
2. А если выбрать по имени, перезагрузить, то по индексу выбрать можно.
3. Т.е. лочит только по чему-то одному, а реально устройство по 2м параметрам можно выбирать.
4. Тут надо либо ЧЕТЧЕ проверять чтобы поток сам от себя не лочил устройство, либо пока не трогать альтернативный выбор по индексу :az:
 

Кто просматривает тему: (Всего: 3, Пользователи: 0, Гости: 3)