2022년 3월 11일 금요일

c# null체크 하는 방식

 


///안좋은 예
            ///

            ///if (_socket == null)
            ///    return;
            ///_socket = null;


///멀티 스레드 환경일때 예

int _disconnected = 0;

///_disconnected 를 1로 변경하고 원래값을 반환한다(return _disconnected ->0)
///_disconnected 를 1로 변경하고 원래값을 반환한다(return _disconnected -> 1)
///1이 되면 리턴(2번이상 실행됬다는 소리!!)
if (Interlocked.Exchange(ref _disconnected, 1) == 1)
                return;


근데 언제 다시 0으로 만들어줘서 _disconnected가 다시 0 되는거지???
new Session이라서 처음에는 무조건 0!

만약 돌려쓴다면 다시 0으로 돌려줘야함

Interlocked.Exchange(ref _disconnected, 0)//lock 해제






댓글 없음:

댓글 쓰기

git rejected error(feat. cherry-pick)

 문제 아무 생각 없이 pull을 받지않고 로컬에서 작업! 커밋, 푸시 진행을 해버렷다. push에선 remote와 다르니 당연히 pull을 진행해라고 하지만 로컬에서 작업한 내용을 백업하지 않고 진행하기에는 부담스럽다(로컬작업 유실 가능성) 해결하려...