Лок прокси в многопотоке

Philipp

Client
Регистрация
14.10.2019
Сообщения
100
Благодарностей
55
Баллы
28
Подскажите что делаю не так, задача брать из базы прокси, менять статус дабы другие потоки его не использовали, если запускаю шаблон и добавляю по 1 потоку - то всё нормально, прокси лочатся как надо, но если оставляю поток поработать какое-то время - случается путаница и я уже вижу что 10 потоков работает, а залочены только 2 прокси.

Логика такая, перед работой берётся 1 прокси из базы со статусом wait, меняется статус на working, дальше чек на коннект, если нет ответа - другим кубиком прокси обратно в статус wait и берём новый, если отработал шаблон нормально, прокси в статус - wait
 

Philipp

Client
Регистрация
14.10.2019
Сообщения
100
Благодарностей
55
Баллы
28
@VladZen не могу вставить код, ошибку выдаёт


Упс! Мы столкнулись с некоторыми проблемами. Пожалуйста, попробуйте позже. Более детальную информацию об ошибке вы можете посмотреть в консоли браузера
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 718
Баллы
113

Philipp

Client
Регистрация
14.10.2019
Сообщения
100
Благодарностей
55
Баллы
28
А где тут лок то ? это описана работа с метками в базе.
Да, я это имел ввиду. Вопрос в том как найти ошибку в этих метках, есть подозрение на то, что таблица не лочится и поэтому берутся одни и те же прокси в работу
 

Phoenix78

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

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 506
Благодарностей
3 365
Баллы
113
Да, я это имел ввиду. Вопрос в том как найти ошибку в этих метках, есть подозрение на то, что таблица не лочится и поэтому берутся одни и те же прокси в работу
С большой вероятностью, у вас обычная ошибка в логике блокировки таблицы.
 

Philipp

Client
Регистрация
14.10.2019
Сообщения
100
Благодарностей
55
Баллы
28
А как код вставить? Ошибка какая-то, я противник хрустальных шаров=))
 

Yuriy Zymlex

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

Philipp

Client
Регистрация
14.10.2019
Сообщения
100
Благодарностей
55
Баллы
28
C#:
DB db = new DB(db_host, db_user, db_pswd, db_database, db_charset);
db.query("LOCK TABLES `"+proxy_table+"` WRITE");
Не вставляет полный код, прикрепляю файлом
 

Вложения

Последнее редактирование:

Yuriy Zymlex

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

Philipp

Client
Регистрация
14.10.2019
Сообщения
100
Благодарностей
55
Баллы
28
И что с этим можно сделать?
 

Yuriy Zymlex

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

Philipp

Client
Регистрация
14.10.2019
Сообщения
100
Благодарностей
55
Баллы
28

Я правильно понмаю что нужно в общем коде создать новый объект db_locker например и выполнять подключение к базе и все манипуляции уже внутри этого лока?


lock (SyncObjects.db_locker){
Подключение и работа с базой
}
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 506
Благодарностей
3 365
Баллы
113
Я правильно понмаю что нужно в общем коде создать новый объект db_locker например и выполнять подключение к базе и все манипуляции уже внутри этого лока?


lock (SyncObjects.db_locker){
Подключение и работа с базой
}
Да, операции получения прокси с проверкой и сменами её статуса.
 
  • Спасибо
Реакции: Philipp

Philipp

Client
Регистрация
14.10.2019
Сообщения
100
Благодарностей
55
Баллы
28

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