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

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

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

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

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

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

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

  • @DrPrime

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

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

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

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

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

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

    0_1493393897689_ReloadResource.png

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

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

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

  • @support

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

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

  • 0 Votes
    18 Posts
    1777 Views
  • 1 Votes
    9 Posts
    1641 Views
  • 0 Votes
    7 Posts
    2068 Views
  • 0 Votes
    2 Posts
    713 Views
  • 0 Votes
    15 Posts
    7348 Views