728x90 반응형 전체 글82 Monitor Interlock과 같이 공유 자원 선점의 동기화를 위해 사용 된다Interlock 의 경우 특정 쓰레드 동기화가 필요한 코드 블럭 {임 계 구 역}을 동기화 할 때 쓰기 보다는 특정 변수의 Increment 와 Decrement를 할때 많이 쓰인다 코드 블럭 단위의 임계 구역의 진입을 제어하기 위해 Monitor와 lock가 제공 된다 여기서 사용 되는 object obj는 세마포어 에서 비유 되는 자물쇠와 같은 역할이다P(), V(),Semaphore(obj) RS = objP();//if(RS >0 then RS= RS-1;else block();//{ 임계구역 } V() // RS = RS+1; wake_up(); //Monitor 사용 예제namespace Monitor_Ex{ class .. 2024. 10. 16. 스핀락 스핀락은 폴링 방식의 동기화 처리를 하는 방식이다마이크로 프로세서 에서 내부 인터럽트를 사용하지 않고 값의 state 가 바뀌는지 while(1) 을 이용하여 확인 하는 것 과 같다예를 들어 num 이라는 데이터를 첫 번째 스레드 에선 +1씩 계속 증가 시키고 두 번째 스레드 에선 -1씩 계속 감소 시키는 행위를 각각 10만번씩 하면 직관적으로는 당연히 프로그램이 뻗지 않는 이상 당연히 0이 나올 것 이다 하지만 자원 접근에 대한 동기화가 이루어 지지 않으면 한 쪽에서 값을 변경 시켜도 다른 쪽에선 이전에 가지고 있던 값을 최신이라고 저장 하고 있다가 값을 변경시키는 현상이 발생 하므로 의도했던 데이터 갱신이 이루어지지 않는다이를 해결 하기 위해 첫 번째 폴링 방식의 스핀 락을 구현 할 때 발생할 수 있.. 2024. 10. 16. C# Thread(스레드) 주요 속성과 메서드 스레드의 속성Name : 스레드의 명칭 지정IsAlive : bool형 스레드가 살아있는지 죽었는지 확인IsBackgroundforeground : 주 스레드의 종료와 상관없이 독립적으로 작동하는 부 스레드background : 주 스레드의 종료와 연계하여 같이 종료하는 부 스레드public bool IsBackground {get; set; }CurrentThread기본 예제namespace Thread_EX{ class Program { static void func() { int i = 0; while (true) { Console.Write($"{i++} "); .. 2024. 10. 15. 무명 메서드 (Anonymous Method) C# delegate 예제를 보면 예제의 delegate 들은 모두 이미 정의된 메서드를 가리키고 있었다 이렇게 미리 정의된 메서드 들 과 달리 C# 2.0에서 부 터 메서드를 미리 정의하지 않아도 되는 메서드 명이 없는 무명 메서드를 지원 하게 되었다 만약 어떤 메서드 가 일회용으로 단순한 문장들로 구성 되어 있다면 굳이 별도의 메서드를 정의 하지 않아도 되는 것이다 무명 메서드를 만들기 위해서는 delegate 키워드와 함께 아래 파라미터와 실행 문장 블럭을 적으면 된다 delegate 뒤에 파라미터는 해당 메서드 원형(Prototype)에 맞는 동일한 파라미터 타입이여야 하며 실행 문장 블럭에는 여러 문장들을 쓸 수 있다 무명 메서드는 외관 상 인라인 메서드(Inline method) 형식을 띠며 .. 2024. 10. 14. TCP 서버 TcpListener 사용법.NET Framework에서 TCP 서버 프로그램을 개발하기 위해서는 System.Net.Sokets.TcoListener 클래스를 사용한다 TcpListener 클래스는 내부적으로 System.Net.Sockets.Soket 클래스 기능들을 사용하여 TCP Port Listening 기능을 구현하고 있다 TCP 서버는 TcpListener 클래스를 통해 포트를 열고Tcp Listener.AcceptTcpClient() 메서드를 통해 클라이언트 접속을 대기하고 있다가 접속 요청이 오면 이를 받아들여 TcpClient 객체를 생성하여 리턴 한다 이후 서버의 TcpClient 객체가 클라이언트와 직접 네트워크 스트림을 통해 통신하게 된다using System.Net.Sockets.. 2024. 10. 11. TCP 클라이언트 TcpClient 클래스.NET Framework에서 TCP 클라이언트 프로그램을 개발하기 위해서는 System.Net.Sokets.TcpClient 클래스를 사용 할 수 있다 TcpClient 클래스는 내부적으로 System.Net.Sokets.TcpClient 클래스 기능을 사용하여 TCP 기능을 구현하고 있다 TCP는 기본적으로 IP와 포트를 필요로 하는데 IP가 호스트 까지 연결하는데 비해 TCP 는 호스트내 포트까지 연결하여 해당 포트에서 기다리고 응용프로그램까지 도달한다TcpClient 사용법TcpClient 크래스를 어떻게 사용하는지 살펴보기 위해 단순한 예제를 살펴보겠다 아래 예제는 간단한 메세지를 TCP 서버에 보내고 응답을 읽어 화면에 표시하는 간단한 프로그램 이다using System.. 2024. 10. 11. 이전 1 2 3 4 5 6 7 8 ··· 14 다음 728x90 반응형