Рассылка по единому списку в многопотоке без повторений

Поддержка
  • @Antonio как я к 1 глобальному приведу? в басе нет глобального списка, есть только глобальная переменная, то что я в неё список воткну, она от этого списком не станет и из неё по строчно каждым поток свою строку также не получится брать.

    Плюс ты пишешь пока глоб переменная используется 1 поток, другие потоки её не трогают. Ок а че она там используется? 1 раз записывается список и возвращает назад? Это моментом происходит и так каждый поток сделает и в итоге выйдет просто лишнее бесполезное действие

  • ладно, походу нашел решение с зацикливание онапликейшенстарт, это единственный вариант

  • @Zack9 said in Рассылка по единому списку в многопотоке без повторений:

    в басе нет глобального списка, есть только глобальная переменная

    Список - это и есть переменная.

    то что я в неё список воткну, она от этого списком не станет

    Станет

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

  • @Antonio в басе есть отдельные экшены для списков, они не работают с глобальными переменными. Толку о того, что список станет глобальным, если я не смогу сделать, чтобы каждый поток использовал свою строку из этой переменной?

  • @Zack9 Я тебе сразу написал последовательность действий. Больше читай, меньше пиши.

  • @Antonio то что ты написал имеет смысл если списки разные, мне какой смысл это юзать если список одинаковый у всех потоков?

  • @Zack9 удачи.

  • @Antonio said in Рассылка по единому списку в многопотоке без повторений:

    Соответственно читаем, что нужно в список и сохраняем в глобальную переменную. Глобальную переменную читаем в локальную - работаем со списком из этой переменной - записываем в глобальную переменную эту локальную переменную со списком. Вот глобальный список.

    да вот именно, ты сам понял что написал? я прочитал глоб переменную в список и она освободилась, тоже самое начнут делать и другие потоки. И везде всё будет одинаковое. Как это поможет каждому потоку свою строку использовать? Вообще никак

  • собственно покумекав вроде нашел решение, вариант с объединением решения Antonio и моим, короче он сказал про глобальный список, но не сказал, что его нужно получать в онапликейшенстарт и потом в локальном списке удалять строку перед перезаписью.

    вот текст разраба по глоб переменным
    78656eed-2fd2-4573-8bcd-e83aec6b54d5-image.png

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

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

    Тем самым, нет лишней нагрузки на парсинг списка каждым потоком одного и того же, а также работа скрипта не нагружается ресурсами. Ну и самое главное, одна и та же строка повторно не будет заюзана.

  • @Zack9 А я не пойму, зачем тебе весь этот геморой с потоками которые парсят один и тот же список? Не проще ли отправлять один поток на парсинг, а другие в это время в ожидание или завершать, а когда один поток закончит парсить, то сразу запускать все остальные и уже делать рассылку во многопотоке...
    По-моему так гораздо проще и меньше ресурсов у железа жрет.

  • @Zack9 а зачем тут выдумывать глобальные списки? Есть же нормальный инструмент - ресурсы. Записывайте результат парсинга в ресурс.

  • @prakash я так и сделал

  • @smeckoi77 ресурсы для нормальной работы обновляющегося постоянно списка, нужно постоянно перезагружать, а это нагружает процессор и жесткий диск. в самом басе написано что перезагружать ресурс для многопотока лучше не юзать