Что такое Race condition
Python
Senior
Без компании
Что такое Race condition
Ответы
Race condition — это ситуация, когда поведение программы зависит от порядка выполнения операций в нескольких потоках/процессах, что может привести к неожиданным результатам. Возникает, когда несколько потоков обращаются к общим данным без синхронизации, и хотя бы один поток изменяет эти данные.
Пример:
```
import threading
counter = 0
def increment():
global counter
for _ in range(100000):
counter += 1
threads = []
for _ in range(5):
t = threading.Thread(target=increment)
threads.append(t)
t.start()
for t in threads:
t.join()
print(counter) # Может быть меньше 500000 из-за race condition
```
Для предотвращения используют механизмы синхронизации: блокировки (`Lock`), семафоры, атомарные операции или thread-safe структуры данных. В примере выше можно добавить `Lock`:
```
lock = threading.Lock()
def increment():
global counter
for _ in range(100000):
with lock:
counter += 1
```