Sobes.tech
Back to questions
Junior — Middle
71

Можешь объяснить, что такое конкуренция процессов или потоков в программировании?

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), чтобы избежать проблем конкуренции.