쓰레드 생성하기 C#은 C++과는 다르게 foreground 가 default 이다. 따라서 아래와 같이 쓰레드를 무한 루프로 만든다면 영원히 끝나지 않을 것이다. 쓰레드의 IsBackground = true 설정을 이용하여 Main 함수가 종료하면 쓰레드도 종료하
공용 저장공간을 쓰레드에서 동시에 접근한다면?위 코드를 실행하면 아무런 문제없이 잘 실행되고 있음을 알 수 있다.즉 전역변수인 \_stop을 동시에 접근할 수 있었다.Visual Studio의 실행 옵션을 Debug에서 Release로 변경하면 온갖 최적화가 진행이 된
1) Temporal Locality시간적으로 보면, 방금 주문한 테이블에서 추가 주문이 나올 확률이 높다.방금 주문한 걸 메모해 놓으면 편하지 않을까?1) Spacial Locality공간적으로 보면, 방금 주문한 사람 근처에 있는 사람이 추가 주문을 할 확률이 높다
아래 코드를 실행해보면 쓰레드를 무리없이 빠져나오는 것을 볼 수 있다.어떻게 이러한 일이 가능한 것일까?위 코드가 아래와 같이 맘대로 변경이 된다는 것이다.x = 0, y = 0r1 = x r2 = yy = 1 x = 1그렇다면 해결방법은 무엇일까?메모리
아래와 같이 코드를 실행해보자.예상처럼 0이 결과로 뜨는 것을 알 수 있다.숫자를 100000으로 늘린다면?왜 이런 결과가 나올까?number++; 부분에 집중해보자.위 한줄의 코드는 아래 세줄로 해석된다.코드 상으로 볼 때는 한가지 단계로 생각했지만 사실상 세가지의
Monitor 키워드를 이용해 해당 행위를 끝날 때까지 작업을 보장해준다.하지만 아래와 같이 Monitor.Enter()를 사용 후 Monitor.Exit()를 제대로 맞춰주지 않으면데드락 (DeadLock) 현상이 발생한다.Monitor.Exit() 를 사용할 타이밍
DeadLock이 발생하는 경우 아래와 같이 2개의 Lock이 존재하며, 2개의 쓰레드가 Lock에 접근하는 경우 DeadLock이 발생했다. 이 상황을 어떻게 해결할까? Monitor.TryEnter() Monitor.TryEnter() 키워드를 이용해서 일정
Lock을 누가 점유하고 있다면?1) 무작정 기다린다. => SpinLock2) 나중에 다시 시도한다. (랜덤성) => 쓰레드가 자기 소유권을 포기 Context Switching3) 운영체제의 도움을 받는다. AutoResetEventlock을 획득할 때까지 무한정
Lock을 누가 점유하고 있다면?1) 무작정 기다린다. => SpinLock2) 나중에 다시 시도한다. (랜덤성) => 쓰레드가 자기 소유권을 포기 Context Switching3) 운영체제의 도움을 받는다. AutoResetEvent무조건 휴식 -> 무조건 1ms
Lock을 누가 점유하고 있다면?1) 무작정 기다린다. => SpinLock2) 나중에 다시 시도한다. (랜덤성) => 쓰레드가 자기 소유권을 포기 Context Switching3) 운영체제의 도움을 받는다. => AutoResetEvent cf) Manual Res
무조건 멀티 쓰레드 환경이라고 해서 Lock만 걸고 들어가는 것이 최선의 방법은 아닐 수 있다.유저들이 한 쪽 구역에 몰리면 어떻게 되겠는가?TLS를 이용하자!전역변수는 전역변수인데 쓰레드마다 고유의 공간이 생겼다.하지만 위 경우는 새로 실행될 때마다 덮어씌어지는 경우
유저 인터페이스 HTTP, FRP, DNS전송 확인 / 오류 해결TCP, UDP네트워크 간 경로 설정IPv4, IPv6관련 장치: 라우터네트워크 내 경로 설정이더넷, PPP관련 장치: 스위치신호 처리케이블/허브1) 소켓 준비2) 서버 주소로 Connect소켓을 통해 S
1) 안전한 트럭2) 전화 연결 방식1) 연결을 위해 할당되는 논리적인 경로가 있다2) 전송 순서가 보장된다1) 분실이 일어나면 책임지고 다시 전송한다 (신뢰성 Good)2) 물건을 주고 받을 상황이 아니면 일부만 보냄(흐름/혼잡제어)3) 고려할 것이 많으니 속도가 B