본문 바로가기
반응형

전체 글81

패킷 전송 시 CR(Carriage Return)과 LF(Line Feed)를 입력하는 이유 패킷 전송 시 CR(Carriage Return)과 LF(Line Feed)를 입력하는 이유CR(캐리지 리턴, \r, ASCII 값 13)과 LF(라인 피드, \n, ASCII 값 10)는 텍스트 기반 프로토콜에서 메시지의 끝을 나타내는 표준적인 방법입니다.📌 사용 이유데이터 구분 (End of Message, EOM)수신 측에서 데이터 패킷이 완전히 전송되었음을 인식하기 위해 사용됨.텍스트 기반 프로토콜(예: HTTP, Telnet, SMTP, FTP 등)에서도 명령 종료 표시로 많이 사용됨.가독성 및 개행 처리일부 시스템(특히 Windows)에서는 CRLF(\r\n) 조합을 줄 바꿈 문자로 사용.UNIX/Linux 계열은 LF(\n)만 사용하지만, 네트워크 프로토콜에서는 CRLF가 표준.시리얼 통신.. 2025. 2. 3.
1. C# 스레드 생성과 병렬 처리 이해 1. 스레드란 무엇인가?스레드는 프로그램 실행의 기본 단위입니다.프로세스(Process): 실행 중인 프로그램의 인스턴스입니다. 프로세스는 독립적인 메모리 공간과 자원을 갖고 실행됩니다.스레드(Thread): 프로세스 내부에서 실행되는 작은 작업 단위입니다. 한 프로세스는 여러 개의 스레드를 가질 수 있으며, 스레드는 프로세스의 메모리와 자원을 공유합니다.2. 스레드와 프로세스의 차이 구분프로세스스레드정의실행 중인 프로그램프로세스 내부에서 실행되는 작업 단위자원 사용각 프로세스는 독립적인 메모리와 자원을 갖습니다.프로세스의 자원을 공유합니다.오버헤드새로운 프로세스를 생성하면 많은 자원이 필요합니다.새로운 스레드는 프로세스보다 가볍고, 더 적은 자원을 사용합니다.병렬 처리여러 프로세스는 병렬로 실행되지만,.. 2025. 1. 24.
Breath 'Breath'는 영어로 '숨', '호흡'을 의미하는 명사입니다. 이는 폐로 들이마시거나 내쉬는 공기를 가리키며, 한 번의 호흡 행위를 나타내기도 합니다. 예를 들어:"She took a deep breath before speaking." (그녀는 말하기 전에 깊게 숨을 들이마셨다.)"After running, he was out of breath." (달린 후에 그는 숨이 찼다.)한편, 'Breathe'는 '숨을 쉬다'를 의미하는 동사로, 공기를 들이마시고 내쉬는 행위를 나타냅니다. 예를 들어:"It's important to breathe deeply during meditation." (명상 중에는 깊게 숨을 쉬는 것이 중요하다.)"She finds it hard to breathe in crow.. 2025. 1. 20.
line vs lane 차이 점 'line'과 'lane'은 영어에서 의미와 용도가 다른 단어입니다.'line'은 일반적으로 '선'을 의미하며, 두 점을 연결하는 직선이나 연속적인 표시를 나타냅니다. 예를 들어:"Please stay in line." (줄을 서 주세요.)"The line starts here." (줄은 여기서 시작합니다.)'lane*은 '차선' 또는 '좁은 길'을 의미하며, 선과 선 사이의 공간이나 통로를 나타냅니다. 예를 들어:"Stay in your lane." (당신의 차선을 지키세요.)"Seoul has more bus-only lanes." (서울에는 버스 전용 차선이 늘어났습니다.)기억하기 쉽게, 'line'의 'i'는 가늘고 긴 선 모양을, 'lane'의 'a'는 넓은 공간을 연상시켜 그 안에 무언가가 들.. 2025. 1. 20.
4. 태스크 병렬 라이브러리 1. 태스크 생성개념: 태스크는 비동기 작업을 실행하는 기본 단위입니다. Task.Run 또는 Task.Factory.StartNew를 사용하여 태스크를 생성할 수 있습니다.주요 메서드:Task.Run: 비동기 작업을 실행합니다.Task.Wait: 태스크 완료 대기.Task.Result: 태스크 결과 반환.2. 태스크로 기본적인 연산 수행개념: 배열의 각 요소를 병렬로 처리하거나 CPU 바운드 작업을 병렬화하여 효율성을 높입니다.주요 메서드:Task.Run과 Parallel.ForEach로 데이터를 병렬로 처리.태스크의 결과를 수집하거나 추가 연산 수행.3. 태스크를 함께 조합개념: 여러 태스크를 조합하여 의존성을 처리하거나 결과를 결합합니다.주요 메서드:Task.WhenAll: 모든 태스크 완료 후 처.. 2025. 1. 20.
C# APM(Asynchronous Programming Model) 패턴 C# APM(Asynchronous Programming Model) 패턴APM(Asynchronous Programming Model)은 비동기 프로그래밍을 구현하는 오래된 패턴으로, .NET Framework 초기에 설계되었습니다. 이 패턴은 Begin/End 메서드 쌍을 사용하여 비동기 작업을 수행하고, 콜백 또는 IAsyncResult를 통해 결과를 처리합니다.APM의 주요 개념Begin/End 메서드 쌍:비동기 작업을 시작하는 BeginXXX 메서드와 작업을 완료하고 결과를 가져오는 EndXXX 메서드로 구성됩니다.예: FileStream.BeginRead()와 FileStream.EndRead().IAsyncResult 인터페이스:BeginXXX 메서드는 비동기 작업의 상태를 나타내는 IAsy.. 2025. 1. 20.
C# 태스크(Task)와 비동기 프로그래밍: 생성, 연속 작업, 부모-자식 관계 이해 internal class Program { static int TaskMethod(string name, int second) { DateTime now = DateTime.Now; string formattedTime = now.ToString("HH:mm:s:fff"); Console.WriteLine($"[{formattedTime}] " + "Task {0} is running on a thread id {1}. Is thread pool thread: {2}", name, Thread.CurrentThread.ManagedThreadId, .. 2025. 1. 20.
C# Task 기본 동작과 스레드 실행 시나리오 이해 이 코드는 C#에서 태스크(Task)를 사용하여 멀티스레드 환경에서 연산을 수행하는 기본적인 예제를 보여줍니다. 코드를 분석하고 스레드 풀(Thread Pool)과 메인 스레드에서 실행되는 태스크의 차이를 교육용으로 설명하겠습니다.코드 구성 및 주요 흐름1. CreateTask 메서드static Task CreateTask(string name){ return new Task(() => TaskMethod(name));}이 메서드는 태스크를 생성합니다.태스크는 Task 타입으로 반환되며, 내부적으로 TaskMethod를 실행합니다.태스크는 생성만 되며, 실행은 호출자가 결정합니다 (Start()나 RunSynchronously()를 호출해야 실행됩니다).2. TaskMethod 메서드static i.. 2025. 1. 17.
Windows 공유 폴더 동시 연결 제한 해결 방법 해당 오류는 Windows 파일 공유 설정에서 동시에 연결할 수 있는 클라이언트 수 제한에 도달했을 때 발생합니다. 이 제한은 기본적으로 Windows 에디션 및 설정에 따라 달라지며, 아래 방법으로 문제를 해결할 수 있습니다.1. 연결 제한 확인Windows에서 파일 공유 연결에는 다음과 같은 제한이 있습니다:Windows Professional/Enterprise:기본적으로 최대 20개의 동시 연결 허용.Windows Home:최대 10개의 동시 연결 허용.Windows Server:라이선스 및 구성에 따라 더 많은 동시 연결 가능.2. 해결 방법a) 연결 제한 확인 및 해제현재 연결 확인:관리자 권한으로 명령 프롬프트를 열고 다음 명령어 실행:net session현재 연결된 클라이언트 목록을 확인할.. 2025. 1. 17.
C# TPL: 태스크 생성 방식과 실행 흐름 완벽 이해 C# 태스크 병렬 라이브러리(TPL) - 태스크 생성**태스크 병렬 라이브러리(TPL)**은 멀티스레드 프로그래밍을 쉽게 하기 위해 .NET에서 제공하는 기능입니다. Task는 TPL의 핵심 클래스 중 하나로, 비동기 작업을 처리하고 스레드 풀(Thread Pool)을 활용하여 작업을 병렬로 실행합니다.예제 코드 분석internal class Program{ static void TaskMethod(string name) { Console.WriteLine("Task {0} is running on thread id {1}. Is thread pool thread : {2}", name, Thread.CurrentThread.ManagedTh.. 2025. 1. 17.
반응형