Список, многопоточность

ktokto

Client
Регистрация
17.02.2013
Сообщения
6
Благодарностей
0
Баллы
0
Добрый день.

Есть проект, который обрабатывает таблицу, которая берется из файла (csv) на локальном диске.

tabl.jpg

Есть два списка которые тоже привязаны к файлам на локальном диске.

kei.png

rez.png

Из первого списка "Ключ" бралась первая строка, заносилась в переменную "KEI" и удалялась.

Значение из переменной заносилось в конец списка "Результат".

v rez origin.jpg

Дальше переменная "KEI" сравнивается с данными в таблице и нужные данные из таблицы заносятся в список "Результат".

v rez KEI3.jpg

Дальше бралась вторая строка из списка ключ. Дальше третья и так пока не закончатся строки. В итоге список результат принимал следующий вид:

Строка из списка "Ключ" 1
Нужные данные из таблицы по Первой строке из списка "Ключ" 1
Нужные данные из таблицы по Первой строке из списка "Ключ" 2
Нужные данные из таблицы по Первой строке из списка "Ключ" 3
Нужные данные из таблицы по Первой строке из списка "Ключ" 4

Строка из списка "Ключ" 2
Нужные данные из таблицы по Второй строке из списка "Ключ" 1
Нужные данные из таблицы по Второй строке из списка "Ключ" 2
Нужные данные из таблицы по Второй строке из списка "Ключ" 3

Строка из списка "Ключ" 3
Нужные данные из таблицы по Третьей строке из списка "Ключ" 1
Нужные данные из таблицы по Третьей строке из списка "Ключ" 2
Нужные данные из таблицы по Третьей строке из списка "Ключ" 3
Нужные данные из таблицы по Третьей строке из списка "Ключ" 4
Нужные данные из таблицы по Третьей строке из списка "Ключ" 5

и т.д.

Но это работает только если один поток. Если "включаю многопоточность", то все в списке "Результат" перемешивается.
Как-то так получается:

Строка из списка "Ключ" 1
Строка из списка "Ключ" 2
Строка из списка "Ключ" 3
Нужные данные из таблицы по Второй строке из списка "Ключ" 1
Нужные данные из таблицы по Третьей строке из списка "Ключ" 5
Нужные данные из таблицы по Третьей строке из списка "Ключ" 3
Нужные данные из таблицы по Третьей строке из списка "Ключ" 4
Нужные данные из таблицы по Первой строке из списка "Ключ" 1
Нужные данные из таблицы по Второй строке из списка "Ключ" 2
Нужные данные из таблицы по Второй строке из списка "Ключ" 3
Нужные данные из таблицы по Первой строке из списка "Ключ" 3
Нужные данные из таблицы по Третьей строке из списка "Ключ" 2
Нужные данные из таблицы по Третьей строке из списка "Ключ" 1
Нужные данные из таблицы по Первой строке из списка "Ключ" 4
Нужные данные из таблицы по Первой строке из списка "Ключ" 2

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

rez.png

Т.е. так:

Строка из списка "Ключ" 1
Нужные данные из таблицы по Первой строке из списка "Ключ" 1
Нужные данные из таблицы по Первой строке из списка "Ключ" 2
Нужные данные из таблицы по Первой строке из списка "Ключ" 3
Нужные данные из таблицы по Первой строке из списка "Ключ" 4

Строка из списка "Ключ" 2
Нужные данные из таблицы по Второй строке из списка "Ключ" 1
Нужные данные из таблицы по Второй строке из списка "Ключ" 2
Нужные данные из таблицы по Второй строке из списка "Ключ" 3

Строка из списка "Ключ" 3
Нужные данные из таблицы по Третьей строке из списка "Ключ" 1
Нужные данные из таблицы по Третьей строке из списка "Ключ" 2
Нужные данные из таблицы по Третьей строке из списка "Ключ" 3
Нужные данные из таблицы по Третьей строке из списка "Ключ" 4
Нужные данные из таблицы по Третьей строке из списка "Ключ" 5
 

rostonix

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

Дальше переменная "KEI" сравнивается с данными в таблице и нужные данные из таблицы заносятся в список "Результат".
Нужно это выполнять одним действием. Чтобы между ними ничего лишнего не вклинилось.
 

surrealmix

Client
Регистрация
07.03.2013
Сообщения
715
Благодарностей
409
Баллы
63
Возможно, что Вы понимаете под понятием "Список привязан к файлу" вот это http://clip2net.com/s/5AIrtB
Если это так, то у Вас список не привязан к файлу. Для привязки есть отдельный экшн "Операции над списком -> Привязать список к файлу".
 

rostonix

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

surrealmix

Client
Регистрация
07.03.2013
Сообщения
715
Благодарностей
409
Баллы
63

rostonix

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

ktokto

Client
Регистрация
17.02.2013
Сообщения
6
Благодарностей
0
Баллы
0
Нужно это выполнять одним действием. Чтобы между ними ничего лишнего не вклинилось.
Не понимаю, как это выполнять одним действием? Там много IF, поочередно перебираются строки, постоянно сравнивается, то что взяли удаляется (не строчки, а значение ячечек). Может можно какой-то временный список для каждого потока делать и оттуда уже скопом в финальный список заносить?

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

rostonix

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

Я имел ввиду что собирать данные вы можете в любое количсевто шагов, а писать уже в один шаг, объединив все переменные.
 

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