Как реализовать последовательное сохранение списка при многопоточке?

toxass

Client
Регистрация
18.03.2010
Сообщения
280
Благодарностей
12
Баллы
18
Стоит задача брать из списка построчно параметры:

1. Маша

2. Катя

3. Женя

4. Даша

….

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

Все просто, но мне нужно синхронизировать строки, чтобы при многопоточке для, скажем, Маши не спарило инфу от Кати или Жени.

Надеюсь на ваши знания бро ;-)
 

nole

Client
Регистрация
19.11.2010
Сообщения
368
Благодарностей
217
Баллы
43
используй таблицу и пиши в новую по номерам строк, или в ту же таблицу в другой столбец
 

toxass

Client
Регистрация
18.03.2010
Сообщения
280
Благодарностей
12
Баллы
18
Я чет не понимаю. Если я беру с удалением строку из таблицы с именами для парсинга, а затем добавляю новую строку, уже теряется последовательность. Или ты предлагаешь через глобальный счетчик это сделать?
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
глобальный счётчик при многопотоке только даст преимущества в данных напримерах цифрах , а если это нинадо то думаю не стоит за глобальный браться)) сам не мало просто намучился но победил всё равно), в многопотоке брать машу и пашу и дашу с удалением то запишится всё то что относилось к тому потоку, честно просто я не понял вопроса немного, как понять что сначала берём построчно а потом последовательно???? Эти имена перед последовательностью ложатся куда то что ли, если брать к примеру в 5 потоков с удалением то каждый поток буде свои действия делать
 

toxass

Client
Регистрация
18.03.2010
Сообщения
280
Благодарностей
12
Баллы
18
Смотрите, если я делаю в 1 поток, все берется последовательно (каждый результат для парсинга с новой строки), а затем также последовательно складывается в новый файл, но уже с результатами парсинга. Мне нужно сделать тоже самое только многопоточно. Очень важно сохранять последовательность.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Смотрите, если я делаю в 1 поток, все берется последовательно (каждый результат для парсинга с новой строки), а затем также последовательно складывается в новый файл, но уже с результатами парсинга. Мне нужно сделать тоже самое только многопоточно. Очень важно сохранять последовательность.
всё так же и при многопотоке сложится если строки сразу возьмуться с удалением и продолжат свои действия, только при многопотоке так получится, если маша была первая то может оказаться вася первый но своими данными, так как 5 поток может завершить задачу быстрее чем первый
 

toxass

Client
Регистрация
18.03.2010
Сообщения
280
Благодарностей
12
Баллы
18
всё так же и при многопотоке сложится если строки сразу возьмуться с удалением и продолжат свои действия, только при многопотоке так получится, если маша была первая то может оказаться вася первый но своими данными, так как 5 поток может завершить задачу быстрее чем первый
Вот. Этого мне и нужно избежать, иначе вся работа впустую.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
избежать ты этого не сможешь, данные главно будут правильные, просто у васи быстрей допустим открылся браузер или пришёл запрос, если ты подумал что перемешатся то нет не перемешаются
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
тем более если есть готовый проект в одном потоке, что стоит два включить и проверить
 

toxass

Client
Регистрация
18.03.2010
Сообщения
280
Благодарностей
12
Баллы
18
избежать ты этого не сможешь, данные главно будут правильные, просто у васи быстрей допустим открылся браузер или пришёл запрос, если ты подумал что перемешатся то нет не перемешаются
Может ты подскажешь как сделать глобальный счетчик тогда?) Или лучше пример шаблона, если есть.
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
на форуме есть про это, и от ростоникса и я кому то делал, точную задачу ты не говоришь что именно надо, поэтому это одним экшеном не обойтись это точно, но и при глобальном счётчике вася всё равно может прийти первый
 

toxass

Client
Регистрация
18.03.2010
Сообщения
280
Благодарностей
12
Баллы
18
на форуме есть про это, и от ростоникса и я кому то делал, точную задачу ты не говоришь что именно надо, поэтому это одним экшеном не обойтись это точно, но и при глобальном счётчике вася всё равно может прийти первый
Точную задачу я описал выше.

Сейчас я планирую взять глобальный счетчик, и ставить каждому запросу свой последовательный номер. Затем сделать сортировку по номеру и в итоге получить правильную последовательность. Или я что-то упустил?
 

nole

Client
Регистрация
19.11.2010
Сообщения
368
Благодарностей
217
Баллы
43
лучше не надо глобальный счетчик, добавь столбец в таблице и пронумеруй в нем все строки, если так важен порядок, это поможет восстановить порядок строк
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
ну проще тогда если 5 человек и много данных, и именно каждый должен взять своё, для каждого текстовик сделать, быстрее немного работа будет чем с таблицей
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
Точную задачу я описал выше.

Сейчас я планирую взять глобальный счетчик, и ставить каждому запросу свой последовательный номер. Затем сделать сортировку по номеру и в итоге получить правильную последовательность. Или я что-то упустил?
как мне раньше говорили, вопрос неясен) но из него я так понял, берём машу и идём на сайт парсить, берём васю и идём парсить, о том что перед парсингом надо по десяти текстовикам пройти и слова не было а если ненадо проходить и точную сумму в цифрах вычислять то как бы не вижу большой проблемы, запусти свой проект на два потока и посмотри как отработает
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 407
Благодарностей
9 116
Баллы
113
лучше не надо глобальный счетчик, добавь столбец в таблице и пронумеруй в нем все строки, если так важен порядок, это поможет восстановить порядок строк
не, не надо глоб. сч. - он не поможет..
вот nole дело посоветовал - пронумеровать строки в доп. столбце вх. файла, а потом когда работа закончилась - отсортировать вых. файл по возрастанию и строки лягут точно: 1, 2, 3, и тд.. (в вых. файле должен быть первый столбец с нумерацией)
 
Последнее редактирование:

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