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

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28
Как сделать, чтобы список из которого берутся данные не менялся?
Знаю типо надо создать другой список и из него брать, но у меня не получается, то у меня список копируется, то еще что, есть у кого готовое решение?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Не ставить галку "сохранять изменения в файл" в свойствах списка
 

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Зачем тут глобальные?
 

Art4D

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

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 715
Баллы
113
Все, понял. Тогда проще сделать через через копию файла делать. С глобальными мороки гораздо больше
 

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28

zena2015

Client
Регистрация
10.07.2015
Сообщения
44
Благодарностей
8
Баллы
8
Если редко запускать, проще вручную. Если постоянно, то запрограммировать на автоматическое ежедневное? копирование с оригинала.

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

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28
Если редко запускать, проще вручную. Если постоянно, то запрограммировать на автоматическое ежедневное? копирование с оригинала.

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

zena2015

Client
Регистрация
10.07.2015
Сообщения
44
Благодарностей
8
Баллы
8
Копировать не список нужно а файл. Наличие файла в котором список - как флаг того первый это запуск или нет.
Первый поток создаст файл и последующие уже будут проверять и видеть что файл существует и брать список с него.
 
  • Спасибо
Реакции: Art4D

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28
Копировать не список нужно а файл. Наличие файла в котором список - как флаг того первый это запуск или нет.
Первый поток создаст файл и последующие уже будут проверять и видеть что файл существует и брать список с него.
Понял, но удалять потом руками файл тоже не то, я хотел продать шаб с зенобоксом, что я буду обьяснять клиенту что надо руками удалять файл пустой)? Наверное просто сделаю комент в входных настройках, чтобы копию файла делали.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Понял, но удалять потом руками файл тоже не то, я хотел продать шаб с зенобоксом, что я буду обьяснять клиенту что надо руками удалять файл пустой)? Наверное просто сделаю комент в входных настройках, чтобы копию файла делали.
В настройках списка просто не ставьте галочку "Оставлять пустой файл".
 

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28
В настройках списка просто не ставьте галочку "Оставлять пустой файл".
ага, только шаб будет ходить по кругу, потому что в начале стоит проверка на существование файла, сложно все чет
 

zena2015

Client
Регистрация
10.07.2015
Сообщения
44
Благодарностей
8
Баллы
8
Понял, но удалять потом руками файл тоже не то...
Хорошо, тогда подойдем к теме с другой стороны:
- Как бы вы хотели чтобы клиент указывал шаблону, что перебирать надо список с начала или продолжать работать над старым?
 
  • Спасибо
Реакции: Art4D

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
Самый простой способ - хранить счетчик во внешнем файле. И брать из списка по этому счетчику.
 
  • Спасибо
Реакции: Art4D

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
Самый простой способ - хранить счетчик во внешнем файле. И брать из списка по этому счетчику.
Как раз таки не самый простой. Самый простой и надежный - это делать бэкап source файла ручками, брать строки с удалением и не париться. Я не думаю, что клиенты настолько тупые, что не поймут такую банальную вещь.
 
  • Спасибо
Реакции: Art4D

zortexx

Client
Регистрация
19.09.2011
Сообщения
2 520
Благодарностей
1 226
Баллы
113
Как раз таки не самый простой. Самый простой и надежный - это делать бэкап source файла ручками, брать строки с удалением и не париться. Я не думаю, что клиенты настолько тупые, что не поймут такую банальную вещь.
1. Клиенты встречаются разные.
2. Чаще всего клиент не знает чего он хочет, не говоря уже о нюансах реализаций.
3. Клиент не обязан быть профессионалом в том вопросе для решения которого он нанимает специалиста.
4. Тупой или нет - клиент это человеческий фактор, который вмешивается в работу программы. До сорока процентов всех неполадок так или иначе связано с человеческим фактором.

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

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

Art4D

Client
Регистрация
22.08.2014
Сообщения
276
Благодарностей
48
Баллы
28
В общем сделал через копию файла, спасибо всем, там надо было после копии паузу поставить и все запустилось так как надо.
 

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