Back to questions
Senior
1
Как реализовать простой механизм блокировки (lock) в памяти для защиты от конкурентного доступа без использования внешних зависимостей?
Companies where asked
Яндекс
Answer from AI
sobes.tech AI
В Python для реализации простого механизма блокировки в памяти без внешних зависимостей можно использовать встроенный модуль threading и класс Lock. Он обеспечивает взаимное исключение (mutex), позволяя защитить критическую секцию от одновременного доступа из разных потоков.
Пример:
import threading
lock = threading.Lock()
shared_resource = 0
def critical_section():
global shared_resource
with lock: # блокировка
# критическая секция
temp = shared_resource
temp += 1
shared_resource = temp
# Запуск нескольких потоков
threads = [threading.Thread(target=critical_section) for _ in range(10)]
for t in threads:
t.start()
for t in threads:
t.join()
print(shared_resource) # Ожидается 10
Если нужна блокировка между процессами, можно использовать multiprocessing.Lock. Для более низкоуровневых или специфичных случаев можно реализовать spinlock на основе атомарных операций, но это сложнее и редко нужно.