728x90 Interlocked.CompareExchange1 [쓰레드 동기화]스핀 락(Spin Lock) 구현 스핀 락 스핀락은 폴링 방식의 동기화 처리를 하는 방식이다. 마이크로 프로세서 에서 내부 인터럽트를 사용하지 않고 값의 state 가 바뀌는지 while(1) 을 이용하여 확인 하는것과 같다. 한 가지 예를 보자 num 이라는 데이터를 첫번째 스레드에선 +1 씩 계속 증가시키고 두번째 스레드에선 -1 씩 계속 감소시키는 행위를 각각 10만번 씩 하면 직관적으로는 당연히 프로그램이 뻗지 않는이상 당연히 0이 나올 것이다. 하지만 이전 포스팅에서 자원 접근에 대한 동기화가 이루어 지지 않으면 한 쪽에서 값을 변경 시켜도 다른 쪽에선 이전에 가지고 있던값을 최신이라고 저장하고 있다가 값을 변경시키는 현상이 발생하므로 의도했던 데이터 갱신이 이루어지지 않는다. 이를 해결하기 위해 첫번째 폴링 방식의 스핀락을 구.. 2020. 7. 20. 이전 1 다음 728x90