Встречается на собеседованиях • сегодня

Какие знаешь проблемы, когда все потоки имеют доступ к глобальной переменной

Основная проблема — состояние гонки (race condition), когда несколько потоков одновременно изменяют глобальную переменную, приводя к неожиданным результатам.

Пример:

python
import threading

counter = 0

def increment():
    global counter
    for _ in range(100000):
        counter += 1

threads = []
for _ in range(10):
t = threading.Thread(target=increment)
threads.append(t)
t.start()

for t in threads:
t.join()

print(counter) # Может быть меньше 1_000_000 из-за race condition

text

**Другие проблемы:**  
- **Инверсия приоритетов** — один поток может надолго заблокировать доступ.  
- **Deadlock** — если глобальные переменные используются для синхронизации.  
- **Неочевидные баги** — сложно отследить, где и как меняется состояние.  

**Решение:**  
Использовать `threading.Lock`, `threading.RLock` или другие механизмы синхронизации.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы