본문 바로가기

Programing (프로그래밍)/WPF & C# (C Sharp)

WPF & C# - Interlocked ( 멀티쓰레딩에서 변수 변경 시 필수 / lock 대체 / 멀티쓰레드 / MultiThread / Threading )

728x90
반응형
 WPF & C# - Interlocked ( 멀티쓰레딩에서 변수 변경 시 필수 / lock 대체 / 멀티쓰레드 / MultiThread / Threading )

 

동시에 여러 쓰레드에서 외부 변수를 POP 하거나 Peek 할 때 문제가 발생할 수 있다.

( POP, Peek 뭔 말인지 잘 모르겠다. 어쨌든 문제가 되는부분은 변수를 읽을때는 아니고 변경할 때를 말하는 듯 하다. )

 

한 쓰레드에서 외부 변수를 변경하고 있을 때, 다른 쓰레드에서 그 변수를 읽는다면 전혀 다른 값이 발생 할 수 있다는 뜻이다.

 

이를 해결하기 위한것이 lock 였다.

 

그러나 lock  속도를 많이 잡아먹고 잘못 사용할 경우 교착상태에 빠지는등의 이슈가 발생되는 문제가 발생한다.

이를 방지하고자 나온것이 Interlocked 이다.

 

Interlocked 를 사용할 때 외부변수를 변경하는 것이기 때문에 반드시 ref 를 사용하여 변경해야 한다.

기존의 lock에 비해서 시간소요가 1/3 밖에 되지 않는다고 하며, 락을 걸고 푸는 것이 자동으로 이루어져 교착상태에 빠질 위험성이 없다고 한다.

 

아래 좋은 사이트들을 좀 더 참고하자.

 

참고

docs.microsoft.com/ko-kr/windows/win32/sync/interlocked-variable-access

 

Interlocked Variable Access - Win32 apps

Applications must synchronize access to variables that are shared by multiple threads.

docs.microsoft.com

아래 사이트에서 잘 정리해 주었다.

m.blog.naver.com/PostView.nhn?blogId=chlrkfka949&logNo=221760146135&proxyReferer=android-app:%2F%2Forg.telegram.messenger%2F

 

[프로그래밍] 멀티 쓰레딩 기본 - 스택과 CAS 연산

<큐와 스택 멀티쓰레딩>​큐와 스택은 전체적인 동작 방식은 다르지만, 세부적인 동작 방식은 완전히...

blog.naver.com

 

728x90
반응형