Синхронизация потоков и глобальные переменные.



  • Возможно ли читать из ресурса в глобальную переменную типа список и при чтении сразу удалять нулевую строку которую считал в локальную переменную, чтобы другие потоки случайно не взяли эту же строку? Это чтобы не трогать файл proxy.txt, например, когда используешь ресурсы. Либо еще один способ: иметь глобальную переменную индекса в глобальном списке(для экономии памяти) и при чтении увеличивать этот индекс сразу, чтобы другие потоки не взяли эту же строку. Есть ли подобие критических секций?



  • @Mulin я делаю 2м способом, увеличивают индекс сразу после вхождения в поток, и потоки запускают с задержкой - индивидуальной для каждого потока - номер потока умножают на число.



  • Плохо когда у тебя файл под 100мб и каждый раз идет перезапись из-за одной строки.


  • administrators

    @Mulin Почему просто не использовать ресурсы, их ведь можно использовать и с большими файлами, и не боятся, что другой поток будет использовать тот же прокси.



  • @support
    А что тогда делать когда в файле закончатся прокси? Раньше я бы считал просто опять из файла, а сейчас - хз. Считаю что синхронизация очень не помешала бы, т.к. многим не пришлось бы во многих вещах замарачиваться со списками.



  • @Mulin поставить успехи побольше для ресурса, и будет по кругу брать



  • @DrPrime

    по кругу брать

    Понял, спасибо, а то я чет думал, что будет брать ту же строку, пока не закончатся успешные попытки. А если мне надо будет этот список обновить?



  • @Mulin выполнить код Reload('имя_ресурса')



  • @DrPrime
    Понял, но это хорошо когда я получаю список по ссылке, а не из файла, т.к. в файле постоянно будет количество проксей убывать и я их не смогу повторно уже использовать. А если я хочу обновить список проксей в зависимости сколько строк осталось в ресурсе(например просто копируя из другого файла, который не является ресурсом и строки из него соответственно не удаляются)? И еще. Если нет чекбокса на "записи", то я так понял прокси будут так же распределятся как в случае присутствия чекбокса, только из файла строки не будут удалятся?



  • Вроде все понял. Еще вопрос. Если я выставлю обновление списка через время, но к этому времени не останется у меня в списке проксей, то обновление списка произойдет автоматом? Т.е. если в списке использованы все строки, то ресурс обновится?


  • administrators

    @Mulin Действие "Ресурс в список" просто получает данные из ресурса. Ресурс может обновляться периодически

    0_1493393897689_ReloadResource.png

    В будущем добавлю синхронизацию ресурса и списка.



  • @support А команда Reload('имя ресурса') обновит ресурс из файла который был загружен при запуске скрипта, или данные по новой возьмёт из файла?


  • administrators

    @Fox Возьмет по новой



  • @support

    Спасибо за ответы. Еще такой вопрос. Как мне организовать работу, когда мне надо сменить прокси, ( например, если прокси не рабочий), но продолжить не с первого запроса, а с того, где прокси перестал внезапно работать.


  • administrators

    @Mulin Я бы сделал функцию "TestProxy", которая проверяет прокси на валидность и меняет его в случае надобности. Такую функцию можно вызывать во всех критических местах.
    Это все равно оставит шанс перезапуска, но сильно уменьшит его.
    Я подумаю о галке "Менять прокси при отказе" в действии прокси.


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.