Back to questions
Junior — Middle
70
Можешь объяснить, что такое конкуренция процессов или потоков в программировании?
Answer from AI
sobes.tech AI
Конкуренция процессов или потоков — это ситуация, когда несколько процессов или потоков выполняются одновременно и могут обращаться к общим ресурсам.
В программировании это важно для повышения производительности и эффективности использования ресурсов, но требует управления, чтобы избежать конфликтов, например, гонок данных.
Пример: два потока пытаются одновременно изменить одну и ту же переменную. Без синхронизации результат может быть непредсказуемым.
В Python конкуренция достигается с помощью потоков (threading) или процессов (multiprocessing). Потоки разделяют память, процессы — нет.
Пример с потоками:
import threading
counter = 0
def increment():
global counter
for _ in range(100000):
counter += 1
thread1 = threading.Thread(target=increment)
thread2 = threading.Thread(target=increment)
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print(counter) # Результат может быть меньше ожидаемого из-за гонок данных
Для корректной работы используют блокировки (Lock), чтобы избежать проблем конкуренции.