Помогите понять ошибку в многопотоке



  • Всем привет! Ребята, кто не занят и к то в теме помогите понять ошибку
    скрипт в линию при отладке работает нормально - только в многопоток перехожу через запуск - идет ошибка и понять ее не могу вроде все норм - кто укажет?
    0_1490291317009_PROXY_PARSE_BAS.zip



  • @Turutur Привет, сделать все через ресурсы, а не через список, и убрать While. Не делать цыкл(как тогда будет многопоток?)
    Когда создаешь список в функции onApplicationStart - почему-то ошибку выдает, у меня такое тоже было.



  • Вот пример для многопотока через браузер 0_1490465265175_PARSER_PROXY_LINK.xml

    Хотя так плохо, потому что долго и ресурсы жрет.
    Лучше через гет запрос. вот пример 0_1490465396913_PARSER_PROXY_LINK2.xml
    Выставляешь потоки и вперед. Для гет - хоть 300 потоков, все зависит от канала связи и компа.



  • @support Кстате к сапорту. Что было замечено, что какой-то бах есть с функцией onApplicationStart - переменные не передаются на все потоки, если они в ней объявлены. Даже в этом примере, если указать расположение ресурса в onApplicationStart то большенство потоков будет иметь фейл, с сообщением про то что не знают такой переменной, но некоторые потоки обработаются удачно.



  • @seedgg в on aplication start можно указать только глобальные переменные, что бы потоки их увидели. Обычные переменные видны только в рамках одного потока



  • @DrPrime Спасибо, теперь понятно как нужно работать с onApplicationStart



  • Ребята спасибо @seedgg - while я использовал в отладке, чтобы если на странице прокси не найдены не перезагружать скрипт -

    и все же @DrPrime - подскажи - почему выдает такую ошибку:

    "ReferenceError: Can't find variable: VAR_NEW_LIST Номер строки:29 Во время выполнения скрипта VAR_SAVED_PAGE_HTML = _result() ; ; VAR_SCAN_RESULT_LIST = (function(){var rs = []; var r = new RegExp("(\u005cd\u007b1,4\u007d[\u005c.]\u005cd\u007b1,4\u007d[\u005c.]\u005cd\u007b1,4\u007d[\u005c.]\u005cd\u007b1,4\u007d:\u005cd\u007b2,5\u007d)","gm"); var s = VAR_SAVED_PAGE_HTML; var m; var i = -1; while(m = r.exec(s)){if(i == m.index) break; i = m.index; rs.push((m.length>1) ? m[1] : m[0]);} return rs;})() ; ; _if(VAR_SCAN_RESULT_LIST.length==0,function(){ ; log("Прокси на странице не найдены!") ; ; _next("function") ; },function(){ ; ; VAR_NEW_LIST.push(VAR_SCAN_RESULT_LIST) ; ; VAR_JOIN_RESULT_STRING = (VAR_NEW_LIST).join(",") ; ; VAR_NEW_LIST = (VAR_JOIN_RESULT_STRING).split(",") ; ; native("filesystem", "writefile", JSON.stringify({path: VAR_RESOURCE_LOCATION_2,value: (VAR_NEW_LIST).join("\r\n") + ((true) ? "\r\n" : "" ),base64:false,append:true})) ; ; RS("link_site_search", false, false,function(){ RESOURCE_944081 = _result().get() native("filesystem", "writefile", JSON.stringify({path: VAR_RESOURCE_LOCATION,value: (RESOURCE_944081).toString() + "\r\n",base64:false,append:true})) ; ; log("Прокси найдены!") ; ; _next("function") ; })});"
    

    я понимаю - это из-за того что создание списка идет в онапликатионстарт - а список это обычная переменная?

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



  • @Turutur said in Помогите понять ошибку в многопотоке:

    VAR_NEW_LIST

    в онапстарт создаются глобальные переменные, что получить доступ к твоему списку VAR_NEW_LIST созданному в онапстарт, нужно считать эту переменную в локальную.



  • @Turutur said in Помогите понять ошибку в многопотоке:

    а список это обычная переменная?

    да, список,таблица не важно что, это переменная. Данные лежат в оперативной памяти, а переменная позволяет обратится к этим данными и получить их.



  • @out said in Помогите понять ошибку в многопотоке:

    в онапстарт создаются глобальные переменные, что получить доступ к твоему списку VAR_NEW_LIST созданному в онапстарт, нужно считать эту переменную в локальную.

    @out - какая последовательность?
    в онапстарт создаю список - а дальше? список будет в локальной переменной... как мне эту переменную вывести в main



  • 0_1490524374985_efvvfde.xml

    1. в онапстарт создать свой список, дальше создать глоб пер. и присвоить список. Или сразу создать ГП , это уже как получится.
    2. в main считать эту ГП в локальную и использовать дальше локальную.

    в примере наглядно показано.


Log in to reply