@Zen Вот код кубиков, просто скопируйте его и вставьте в редакторе БАС в функцию onApplicationStart. В глобальной переменной DIR всегда будет корень проекта
BAS:[{"name":"","code":"/*Dat:eyJzIjoic2NyaXB0X3N0YXRzX3Byb2plY3RfcGF0aCIsInYiOjEsImYiOltdLCJ1dyI6IjAiLCJ1dCI6IjAiLCJ1dG8iOiIwIiwidW0iOiIwIiwiZCI6W3siaWQiOiJTYXZlIiwidHlwZSI6InZhciIsImRhdGEiOiJQUk9KRUNUX1BBVEgifV19*/\nVAR_PROJECT_PATH = project_path()","internal_label_id":"","dat_precomputed":null,"search_precomputed":null,"code_precomputed":null,"parentid":0,"id":981188489,"donotexecuteduringrecord":false,"is_selected":false,"color":"","is_fold":false,"fd":""},{"name":"","code":"/*Dat:eyJzIjoiUmVnZXhwRmlyc3QiLCJ2IjoxLCJmIjpbXSwidXciOiIwIiwidXQiOiIwIiwidXRvIjoiMCIsInVtIjoiMCIsImQiOlt7ImlkIjoiVmFsdWUiLCJ0eXBlIjoiY29uc3RyIiwiZGF0YSI6IltbUFJPSkVDVF9QQVRIXV0iLCJjbGFzcyI6InN0cmluZyJ9LHsiaWQiOiJSZWdleHAiLCJ0eXBlIjoiY29uc3RyIiwiZGF0YSI6IiheLispKD86KD89XFwvYXBwc3JlbW90ZSl8KD89XFwvYXBwc2xvY2FsKXwoPzooPzwhZW5naW5lKVxcL1teL10rJCkpIiwiY2xhc3MiOiJzdHJpbmcifSx7ImlkIjoiUmVzdWx0IiwidHlwZSI6InZhciIsImRhdGEiOiJESVIifSx7ImlkIjoiUmVzdWx0QWxsIiwidHlwZSI6InZhciIsImRhdGEiOiJBTExfTUFUQ0gifV19*/\nvar regexp_result = native(\"regexp\", \"first\", JSON.stringify({text: VAR_PROJECT_PATH,regexp:\"(^.+)(?:(?=\\u005c/appsremote)|(?=\\u005c/appslocal)|(?:(?\\u003c!engine)\\u005c/[^/]+$))\"}))\nif(regexp_result.length == 0)\nregexp_result = []\nelse\nregexp_result = JSON.parse(regexp_result)\nVAR_ALL_MATCH = regexp_result.pop()\nif(typeof(VAR_ALL_MATCH) == 'undefined' || !VAR_ALL_MATCH)\nVAR_ALL_MATCH = \"\"\nVAR_DIR = regexp_result[0]\nif(typeof(VAR_DIR) == 'undefined' || !VAR_DIR)\nVAR_DIR = \"\"\nif(regexp_result.length == 0)\n{\nVAR_DIR = VAR_ALL_MATCH\n}","internal_label_id":"","dat_precomputed":null,"search_precomputed":null,"code_precomputed":null,"parentid":0,"id":123829951,"donotexecuteduringrecord":false,"is_selected":false,"color":"","is_fold":false,"fd":""},{"name":"","code":"/*Dat:eyJzIjoiZ2xvYmFsc2V0IiwidiI6MSwiZiI6W10sInV3IjoiMCIsInV0IjoiMCIsInV0byI6IjAiLCJ1bSI6IjAiLCJkIjpbeyJpZCI6Ik5hbWUiLCJ0eXBlIjoidmFyIiwiZGF0YSI6IkRJUiJ9LHsiaWQiOiJWYWx1ZSIsInR5cGUiOiJjb25zdHIiLCJkYXRhIjoiW1tESVJdXSIsImNsYXNzIjoic3RyaW5nIn1dfQ==*/\nvar val = JSON.stringify(VAR_DIR);\nPSet(\"basglobal\", \"DIR\", val)","internal_label_id":"","dat_precomputed":null,"search_precomputed":null,"code_precomputed":null,"parentid":0,"id":851150913,"donotexecuteduringrecord":false,"is_selected":false,"color":"","is_fold":false,"fd":""}]Вопрос по многопоточности. Запуск потока после сбора нужных данных
-
чеёрт, чтобы многопоток, чтобы обмениваться данными между потоками глобальные переменные или ресурсы, чтобы в каждом потоке выполнять определенную функцию получать номер потока и в зависимости от номера потока выполнять соответствующую ему функцию, или ресурсы, если до запуска потоков нужнно чтото сделат/инициализировать онеапликейшен.
в это случае количество потоков должно сответствоывать количеству функций желательно. каждый поток может породить поток но лучше так не делать пока не прекрощаешь задовать вопросы. почему я должет смотреть десятки часов видео я конечно не буду а они нет -
@Krotiki said in Вопрос по многопоточности. Запуск потока после сбора нужных данных:
@ruzne Вам по письму и изложению еще долго до адекватности. Каждый мастер в своем деле.
Если кто-то готов помочь, напишите, я заплачу сколько потребуется, но мне нужно именно решение.
дак какой вопрос и такой.
в чем проблема, какие выдает ошибки, пример не работающего скрипта. -
@Krotiki У меня сейчас нет времени накидать скрипт именно по вашему вопросу, но такие вещи делаются успешно, и у меня есть пример скрипта для подобных ситуаций. Прямо вашу проблему он не решает, но точно демонстрирует пути решения.
Мой пост в англоязычной части форума: http://community.bablosoft.com/topic/3776/calling-different-function-in-threads/14# В нем скрипт.
Если нужно доп демо или сделать работу - пишите в личку.
-
@Krotiki said in Вопрос по многопоточности. Запуск потока после сбора нужных данных:
@Denis_krsk Не работает. Сделал все как в схеме, все равно ошибка. Плюс у меня 1 поток - 1 функция, я использовал определения номера потока через "==", а не больше/меньше, правда наврядли из-за этого
тебе советую использовать ресурсы для этой цели
-
@GamiD said in Вопрос по многопоточности. Запуск потока после сбора нужных данных:
@ruzne вроде он из списка берется же данные а глобальный список не возможно сделать ну может и можно через JS
почему?
создать список
наполнить список
создать глобальную переменную
->сюда
присвоить глобальной переменной список
при каждом изменении списка ->туда -
@ruzne, если точнее, то ещё
-читать глобальную переменную со списком в локальную
-изменять список
-сохранять локальный список в глобальную переменнуюПри этом не прерывать блокировку глобальной переменной асинхронными действиями, такими как вывод чего либо в лог.
-
@Antonio said in Вопрос по многопоточности. Запуск потока после сбора нужных данных:
@ruzne, если точнее, то ещё
-читать глобальную переменную со списком в локальную
-изменять список
-сохранять локальный список в глобальную переменнуюПри этом не прерывать блокировку глобальной переменной асинхронными действиями, такими как вывод чего либо в лог.
именно, и чтобы дожувать для большего понимания, нужно учитывать что копируется именно значение переменной, а не что было бы удобнее указатель, в новом потоке нужно коприровать обратно в обычную переменную, потому что то что можно сделать с глобальной переменной очень ограничено. И для бульдозеристов, несмотря на копирование переменные никак не связаны и именения одной не влечет измениня в другой
-
Спасибо за ответы. По ресурсам:
- Даже если я запишу все в ресурсы, как потом доставать из ресурса нужное значение? Все значения, которые у меня есть я выбираю посредством их имени в переменной, а в ресурсе это будет список и индентификация только по порядку возможна, верно? Скорее всего ресурсы не подойдут
- Получается надо сделать глобальными переменными, но тогда вопросы:
- "[[SAVE_ANSWER_1]] = answer;" - это сохраняется по коду данные answer в переменную SAVE_ANSWER_1, как ее глобальной в коде сделать в данном коде?
- Здесь как сделать "ANSWER_BACK_1" глобальной?

-
@Krotiki said in Вопрос по многопоточности. Запуск потока после сбора нужных данных:
Здесь как сделать "ANSWER_BACK_1" глобальной?
Попробуйте в OnApplicationStart инициализировать глобальную переменную. И в коде этой глобальной переменной присвоить значение локальной переменной ANSWER_BACK_1. Дальше глобальная переменная будет как посредник между глобальной и локальной областью. Когда нужно считываем с нее значение в локалку, когда нужно пишем в нее с локалки в глобалку.
