Использование файла со списком в многопотоке

Kirrrrr

Новичок
Регистрация
13.04.2017
Сообщения
24
Благодарностей
0
Баллы
1
Добрый день.

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

Для этого в проекте у меня изначально в проекте есть чистый список, в котором отмечены галочками "загружать из файла", "сохранять изменения списка в файл", но не прописан путь к файлу. Логика построения проекта у меня такая:

1) привязать список к файлу со списком
2) получить первую строку из списка и положить ее в переменную
3) отвязать список от файла
4) очистить список

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

Подскажите, пожалуйста, правильное ли решение? Будет ли работать корректно? Можно ли сделать как-то проще?

Спасибо.

UPD
А как отвязать список от файла? В видеоуроке вроед было сказано, что нужно повторно сделать тот же экшн "Привязать к файлу", но после п. 4 (очистить список) у меня пропадает и файл со списком.
Видимо, не срабатывает отвязка от списка.
 

Kirrrrr

Новичок
Регистрация
13.04.2017
Сообщения
24
Благодарностей
0
Баллы
1
http://zennolab.com/discussion/threads/otvjazat-ot-fajla-spisok-ili-tablicu.12065/

вот тут, я так понимаю, коллега аналогичный вопрос задавал. Но если я правильно понимаю, ему ответили, как удалить файл со списком. А вопрос состоял в том, как удалить список в конкретном проекте и отвязать его от файла со списком, но чтобы сам файл остался целый.
 

Kirrrrr

Новичок
Регистрация
13.04.2017
Сообщения
24
Благодарностей
0
Баллы
1
Я понимаю, что можно делать так:
А) копируем файл со списком для каждого отдельного проекта;
Б) берем из нового файла строку;
В) копируем этот файл на место исходного;
Г) удаляем копию, созданную в п. А

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

Так есть все-таки более правильный способ реализовать эту задачу?
 

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
И тихо сам с собою...

У меня в проекте есть внешний файл со списком. Мне нужно, чтобы при запуске проекта в многопотоке каждый поток брал из этого общего файла первую строчку и удалял ее после этого из файла.
Сразу, при создании, привязывайте список к файлу. Далее экшен работа со списком, получить первую строку, удалить после взятия. Все, на этом танцы с бубном закончились :-)
В многопотоке будет работать корректно.
Никаких :
п. 3, в моем представлении, чтобы не конфликтовать с параллельными потоками исполнения проекта.
п. 4 - чтобы не грузить проект лишней информацией.
Если Вам нужно чтобы после того как в файле закончатся строки он не удалялся, поставьте галочку в настройках списка: "оставлять пустой файл".

Пересмотрите урок 03.8 в первом курсе здесь: http://zennolab.com/wiki/ru:zennoposter_start
 
Последнее редактирование:

Kirrrrr

Новичок
Регистрация
13.04.2017
Сообщения
24
Благодарностей
0
Баллы
1
И тихо сам с собою...


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

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

Пересмотрите урок 03.8 в первом курсе здесь: http://zennolab.com/wiki/ru:zennoposter_start
Спасибо тебе, добрый человек, что читаешь форум в выходной день, да еще и подсказываешь )
Изначально так и делал. Но потом задачу немного изменил.

Я кладу в папку с проектом файл с исходным списком. И хочу, чтобы из него взялись все значения по очереди, а потом, когда все закончатся, перебирать заново.
Поэтому у меня по логике проекта создается копия исходного файла со списком, и список проекта привязывается уже к этой копии. А когда весь список исчерпан и файл удален - заново создается копия исходного файла со списком и начинаем заново его перебирать.
Просто я думаю, что нельзя сразу в настройках списка привязать его к файлу, т.к. изначально копии файла со списком не существует. Она создается уже в самом проекте. Или можно?

И вообще есть какая-то разница в синхронизации списка с файлом между:
а) указыванием пути к файлу в настройках списка
б) использовании экшена "привязять к файлу"?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 039
Баллы
113
вы чё обкурились стока буков писать )))))))))))))
 

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
Я кладу в папку с проектом файл с исходным списком. И хочу, чтобы из него взялись все значения по очереди, а потом, когда все закончатся, перебирать заново.
Тогда делай так:
1. Экшен работа со списком, получить первую строку и положить в переменную "Akk", удалить после взятия.
2. Экшен работа со списком, добавить строку в конец списка.

Чем проще шаблон, тем меньше ошибок.

Прикладываю пример
 

Вложения

  • Спасибо
Реакции: Kirrrrr

Kirrrrr

Новичок
Регистрация
13.04.2017
Сообщения
24
Благодарностей
0
Баллы
1
Тогда делай так:
1. Экшен работа со списком, получить первую строку и положить в переменную "Akk", удалить после взятия.
2. Экшен работа со списком, добавить строку в конец списка.

Чем проще шаблон, тем меньше ошибок.

Прикладываю пример
Спасибо! Действительно изящно! А я чота тупил )
 

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 100
Благодарностей
649
Баллы
113
Просто я думаю, что нельзя сразу в настройках списка привязать его к файлу, т.к. изначально копии файла со списком не существует. Она создается уже в самом проекте. Или можно?
Можно.
Посмотрите курсы на которые я Вам дал ссылку выше, 100500 вопросов отпадет.
 

Kirrrrr

Новичок
Регистрация
13.04.2017
Сообщения
24
Благодарностей
0
Баллы
1
Можно.
Посмотрите курсы на которые я Вам дал ссылку выше, 100500 вопросов отпадет.
Да я посмотрел их. Чес слово. И продолжаю смотреть, и по ходу работы возвращаюсь к каким-то. Просто вот иногда сомнения возникают...
Спасибо большое!
 

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