스레드 동기화
- 스레드는 프로세스 안에서 쪼개서 만들었기 때문에 데이터를 공유함
- 따라서 동일한 자원에 접근하면 동기화 문제가 발생
- 동일한 자원을 여러 스레드가 동시에 수정하는 문제
동기화 이슈 해결
- Mutual exclusion(상호 배제)
- 쓰레드는 프로세스 모든 데이터에 접근 가능하므로 한 데이터에 여러 스레드가 접근하지 못하도록 막아줌
g_count = 0
lock = threading.Lock()
def thread_main():
global g_count
lock.acquire()
for i in range(1000000):
g_count = g_count + 1
lock.release()
- 스레딩 락을 g_count 변수에 접근할때 acquire해주고 계산이 다 끝나면 release 해주는 원리로 접근을 막아줌