Ошибки работы шаблона при многопоточности.

myrosh

Новичок
Регистрация
07.04.2015
Сообщения
9
Благодарностей
3
Баллы
3
Задача шаблона - получить адреса соц сетей владельца страницы оставленых для связи, затем рассортировать их и в конце добавить в список в строку с идентификатором клиената и дописать к ниму названия соц сетей с их спарсенными адресами.
Рботает Шаблон следующим образом.
Парсю ДОМ двух страниц сайта , с которых регексом получаю адреса соц сетей оставленных владельцами страниц для связи.
Добавляю эти соц сети в список по строчно.
Получаю количество строк в списке - для организации цикла.
Так как порядок адресов соц сетей в списке постоянно разный необходима сортировка.
Беру первую строку с удалением -определяю регексом какая это соц сеть и далее свичем рапределяю в какую переменную положить эту соц сеть. Тоесть если это ВК - то переменнаяВК, если Фейсбук то переменнаяФБ.
Далее берется следующая соц сеть из списка и тд до очистки списка пока все строки (соц сети)- не будут распределены по своим переменным.
В конце цикла полученные переменные вывожу в окончательный список по строчно
(пример) --- идентификатор клиента; адрес ВК: (переменнаяВК); адрес ФБ: (переменнаяФБ) и тд.
Когда шаблона работает в один поток все в норме.
Когда включаю многопоток в окончательном списке к идентификатору клиента дописываются адреса соц сетей с других страниц (идентификатор).
Думаю это происходит из за того что одним списком пользуются разные потоки.
Один поток еще не распределил все соц сети из списка, а второй или третий дописал в список еще свои строки.
Может ли кто подсказать как это можно исправить или может можно как кто реализовать мою задачу по другому .
Заранее благодарен.
 

myrosh

Новичок
Регистрация
07.04.2015
Сообщения
9
Благодарностей
3
Баллы
3
Ауууу знатокиии?? поможет кто??
 

Чешир

Client
Регистрация
27.06.2014
Сообщения
1 509
Благодарностей
886
Баллы
113
списки в многопотоке работают как часы.
Но можешь сразу сохранять в файл, тоже как часы работает.
Где-то у тебя косяк.
 

myrosh

Новичок
Регистрация
07.04.2015
Сообщения
9
Благодарностей
3
Баллы
3
списки в многопотоке работают как часы.
тоесть у каждого потока типа свой список??? я правильно понял??
Но можешь сразу сохранять в файл, тоже как часы работает.
попробую в файл сделать.
Косяк косяк где тебя найти :-), сначала удалял строку списка в конце цикла, затем сделал брать строку с удалением. -- Думал поможет.
ЧЕШИР спасибо что откликнулся
 

Чешир

Client
Регистрация
27.06.2014
Сообщения
1 509
Благодарностей
886
Баллы
113
Нет, у всех потоков один список привязанный к одному файлу. И если несколько потоков будет писать в один список, привязанный к файлу, то запишется все нормально. Я проверял до 20 потоков, не знаю сколько у тебя.
Так же нормально они и в файл будут записывать, но файл потом придется переконвертить в ютф-8
Из списка строки с удаление тоже нормально берутся.
Для начала попробуй запись в файл с дописыванием и переносом строки.
Но и через списки должно нормально рабоать.
 
  • Спасибо
Реакции: Denchen

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