При парсенге во много потоке функци lock(SyncObjects.TableSyncer) помогает

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
Парсю с сайта таблицу и что бы ускорить, решил парсинг сделать во много потоке. Но я знаю что в таком случае таблица может не корректно записываться, т.е некоторые данные не записываются. Подсказали функцию lock(SyncObjects.TableSyncer), подскажите насколько она эффективная
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
обычный лок. как он может быть эффективным или нет ? он просто блокирует выполнение кода в других потоках в этом месте.
какая таблица то ? локальная или гугл ?
 

Alexbrush

Client
Регистрация
20.11.2020
Сообщения
164
Благодарностей
144
Баллы
43
Парсю с сайта таблицу и что бы ускорить, решил парсинг сделать во много потоке. Но я знаю что в таком случае таблица может не корректно записываться, т.е некоторые данные не записываются. Подсказали функцию lock(SyncObjects.TableSyncer), подскажите насколько она эффективная
Тоже были такие проблемы, но для себя я нашел решение в использовании базы данных вместо таблицы. На практике работает стабильнее и быстрее, чем запись перезапись файла.

Может тоже такой вариант подойдёт.
 
Последнее редактирование:
  • Спасибо
Реакции: Sho

SlavenTyz

Client
Регистрация
30.04.2018
Сообщения
1 085
Благодарностей
29
Баллы
48
обычный лок. как он может быть эффективным или нет ? он просто блокирует выполнение кода в других потоках в этом месте.
какая таблица то ? локальная или гугл ?
Локальная таблица, я запустил 10 потоков. Один поток собирает данные за 1-н день, т.е 10 потоков 10 разных дней. Вот и интересуюсь данные будут все записываться или нет
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
Локальная таблица, я запустил 10 потоков. Один поток собирает данные за 1-н день, т.е 10 потоков 10 разных дней. Вот и интересуюсь данные будут все записываться или нет
не проверишь, не узнаешь :bk:
вообще лучше БД использовать, хотя бы локальную. там хотя бы механизм транзакций есть, ошибки выдает если что. хоть как то можно контролировать факт записи.
 
  • Спасибо
Реакции: Alexbrush

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 518
Благодарностей
3 370
Баллы
113

Alexbrush

Client
Регистрация
20.11.2020
Сообщения
164
Благодарностей
144
Баллы
43
3 человека ответили и все за БД :-)
 
  • Спасибо
Реакции: Sho и djaga

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 720
Баллы
113
3 человека ответили и все за БД :-)
меня больше всего прикалывает, когда модератор/админ советует отказаться от встроенного функционала программы и использовать стороннее решение и хранилище :bk:
 

Alexbrush

Client
Регистрация
20.11.2020
Сообщения
164
Благодарностей
144
Баллы
43
меня больше всего прикалывает, когда модератор/админ советует отказаться от встроенного функционала программы и использовать стороннее решение и хранилище :bk:

Так он вроде и использует работу с внешним файлом, а не только с таблицей внутри самой зенки (проекта). Работа с БД также по сути встроенный функуионал, просто как более удобная альтернатива таблицам можно это использовать при работе в многопотоке, в частности.
 
  • Спасибо
Реакции: Mikhail B.

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