Работа со списком в многопотоке

  • Автор темы Автор темы Art4D
  • Дата начала Дата начала

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Реакции
48
Баллы
28
Как сделать, чтобы список из которого берутся данные не менялся?
Знаю типо надо создать другой список и из него брать, но у меня не получается, то у меня список копируется, то еще что, есть у кого готовое решение?
 
Не ставить галку "сохранять изменения в файл" в свойствах списка
 
Зачем тут глобальные?
 
Зачем тут глобальные?
Так стоп, у меня список вида:
логин:пароль
логин:пароль
В многопотоке если не убирать галку "сохранять изменения в файл" шаблон будет брать всегда 1 строку. Или я чего-то не понимаю?
Я же беру первую строку и удаляю:
xAeLvbzfYbaWg2.png
 
Все, понял. Тогда проще сделать через через копию файла делать. С глобальными мороки гораздо больше
 
Если редко запускать, проще вручную. Если постоянно, то запрограммировать на автоматическое ежедневное? копирование с оригинала.

Если и не редко но и не ежедневно нужно, то вариант такой:
В самом начале проверять есть ли файл со списком, если нет - копировать из оригинала файл и привязать к нему список, а из него уже удалять в многопотоке.
Но перед каждым запуском все же ручками придется удалять пустой файл. (наверное)
 
Если редко запускать, проще вручную. Если постоянно, то запрограммировать на автоматическое ежедневное? копирование с оригинала.

Если и не редко но и не ежедневно нужно, то вариант такой:
В самом начале проверять есть ли файл со списком, если нет - копировать из оригинала файл и привязать к нему список, а из него уже удалять в многопотоке.
Но перед каждым запуском все же ручками придется удалять пустой файл. (наверное)
У меня часть потокв думала что списка нет и копировала из оригинала. т.е. неск дублей в списке
 
Копировать не список нужно а файл. Наличие файла в котором список - как флаг того первый это запуск или нет.
Первый поток создаст файл и последующие уже будут проверять и видеть что файл существует и брать список с него.
 
  • Оценить
Реакции: Art4D
Копировать не список нужно а файл. Наличие файла в котором список - как флаг того первый это запуск или нет.
Первый поток создаст файл и последующие уже будут проверять и видеть что файл существует и брать список с него.
Понял, но удалять потом руками файл тоже не то, я хотел продать шаб с зенобоксом, что я буду обьяснять клиенту что надо руками удалять файл пустой)? Наверное просто сделаю комент в входных настройках, чтобы копию файла делали.
 
Понял, но удалять потом руками файл тоже не то, я хотел продать шаб с зенобоксом, что я буду обьяснять клиенту что надо руками удалять файл пустой)? Наверное просто сделаю комент в входных настройках, чтобы копию файла делали.
В настройках списка просто не ставьте галочку "Оставлять пустой файл".
 
В настройках списка просто не ставьте галочку "Оставлять пустой файл".
ага, только шаб будет ходить по кругу, потому что в начале стоит проверка на существование файла, сложно все чет
 
Понял, но удалять потом руками файл тоже не то...
Хорошо, тогда подойдем к теме с другой стороны:
- Как бы вы хотели чтобы клиент указывал шаблону, что перебирать надо список с начала или продолжать работать над старым?
 
  • Оценить
Реакции: Art4D
Самый простой способ - хранить счетчик во внешнем файле. И брать из списка по этому счетчику.
 
  • Оценить
Реакции: Art4D
Самый простой способ - хранить счетчик во внешнем файле. И брать из списка по этому счетчику.
Как раз таки не самый простой. Самый простой и надежный - это делать бэкап source файла ручками, брать строки с удалением и не париться. Я не думаю, что клиенты настолько тупые, что не поймут такую банальную вещь.
 
  • Оценить
Реакции: Art4D
Как раз таки не самый простой. Самый простой и надежный - это делать бэкап source файла ручками, брать строки с удалением и не париться. Я не думаю, что клиенты настолько тупые, что не поймут такую банальную вещь.
1. Клиенты встречаются разные.
2. Чаще всего клиент не знает чего он хочет, не говоря уже о нюансах реализаций.
3. Клиент не обязан быть профессионалом в том вопросе для решения которого он нанимает специалиста.
4. Тупой или нет - клиент это человеческий фактор, который вмешивается в работу программы. До сорока процентов всех неполадок так или иначе связано с человеческим фактором.

Исходя из вышеизложенного, я вижу абсолютно естественным решением минимизировать влияние клиента на файлы с которыми работает программа. Предложенный мной выше вариант подходит для решения этой задачи. Пара байт записывается в файл очень быстро. Особенно если при этом не нужно вносить изменения в файловую систему. Понятно,, что конкретные параметры на разных системах могут существенно отличаться. Естественно, что у каждого решения есть свои плюсы и минусы. И в большом количестве потоков внешний счетчик может давать сбои, равно как и любые другие решения. К сожалению, ТС не уточнил ресурсоёмкость шаблона и расчетное рабочее количество потоков. Также он по какой-то причине не хочет использовать очевидное решение с подгрузкой списка из файла по ошибке взятия следующего элемента.

Отсутствие полноценной детализации задачи вынуждает исходить из личного опыта при формировании рекомендаций.
 
Последнее редактирование:
  • Оценить
Реакции: Art4D
В общем сделал через копию файла, спасибо всем, там надо было после копии паузу поставить и все запустилось так как надо.
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)