- Регистрация
- 23.09.2016
- Сообщения
- 213
- Реакции
- 8
- Баллы
- 18
Всем привет! У меня такой вопрос, работаю с базой данных, во многопотоке возможно ли такое что потоки могут совпасть и одновременно взять одну и туже строку? Если да, то как этого избежать?
На форуме обсуждался этот момент. Поищите, где то был топик.Всем привет! У меня такой вопрос, работаю с базой данных, во многопотоке возможно ли такое что потоки могут совпасть и одновременно взять одну и туже строку? Если да, то как этого избежать?
Если вы про этот:На форуме обсуждался этот момент. Поищите, где то был топик.
Попробуйте завернуть в обычный зеновский лок.Если вы про этот:
https://zennolab.com/discussion/threads/kak-pri-mnogopotoke-brat-unikalnuju-stroku.44909/
То тут только про списки идет речь(
Спасибо за совет, вот как раз таки пробую!Попробуйте завернуть в обычный зеновский лок.
https://zennolab.com/discussion/thr...enie-id-dobavlennoj-zapisi.53728/#post-400778Блин, день какой то не такой сегодня... Не могу найти, в конкурсных статьях есть хороший материал про локи.
Можно без транзакций сначала апдейтить строку, присваивая спец. полю, например, сгенерированный айди, а после по этому айди брать эту строку
У меня даже с транзациями брал одинаковые строки.Лучше с транзакциями, существует вероятность что одну и туже строку проадейтят более одного потока, между запросами апдейта и последующего селекта.
если одна проапдейчена, то другой апдейт не сможет взять её по условию того, что поле спец идентификатора уже не пустоеЛучше с транзакциями, существует вероятность что одну и туже строку проадейтят более одного потока, между запросами апдейта и последующего селекта.
1. Запросы на выборку типа select не блокируют таблицу или строку. Будут часто совпадать, часто начиная от 10 потоков.возможно ли такое что потоки могут совпасть и одновременно взять одну и туже строку
если одна проапдейчена, то другой апдейт не сможет взять её по условию того, что поле спец идентификатора уже не пустое


