Parallel 클래스를 활용한 멀티스레딩 프로그래밍

Parallel.ForEach()의 활용 Parallel.ForEach() 메서드는 제네릭 컬렉션을 순회하는 데 사용됩니다. ASP.NET Core 웹 애플리케이션 프로젝트에서 이를 사용해 보겠습니다. 먼저, Member.cs라는 클래스를 생성하고 다음과 같이 코드를 작성합니다: public class Member { public int Id { get; set; } public string Name { get; set; } } 그 다음, Index.cshtm ...

9월 14일 09:01에 게시됨

네트워크 환경에서 명명된 파이프를 이용한 멀티스레드 프로세스 간 통신

파이프의 기본적인 사용법에 대해서는 이전에 다룬 명명된 파이프를 이용한 프로세스 간 통신 (System.IO.Pipes 사용) 글을 참조하시기 바랍니다. 본 글에서는 명명된 파이프를 이용한 실제 통신 사례를 소개합니다. 예제 시나리오는 여러 클라이언트가 서버로부터 순차적으로 증가하는 고유 ID를 요청하는 상황입니다. 서버 측 기능: 클라이언트가 새로운 ID를 요청하면 ...

8월 20일 04:05에 게시됨

Java 스레드: 생성, 관리 및 동기화

Java에서 스레드는 독립적인 실행 흐름을 제공하여 애플리케이션의 동시성을 높입니다. 스레드를 생성하고 관리하는 다양한 방법을 이해하는 것은 효과적인 멀티스레드 애플리케이션을 구축하는 데 필수적입니다. 스레드 생성 방법 Java에서 스레드를 생성하는 주요 방법은 다음과 같습니다. 1. Thread 클래스 상속 Thread 클래스를 상속받아 사용자 정 ...

7월 27일 01:01에 게시됨

델파이 10.2.3에서 THttpClient를 활용한 HTTP 비동기 다운로드 구현

델파이 10.2.3의 출시와 함께 더 안정적이고 완성도 높은 버전이 제공되었습니다. 이번 기사에서는 공식 예제를 기반으로 HTTP 비동기 다운로드를 구현하고 다운로드 진행률을 표시하는 방법을 자세히 설명하겠습니다. 핵심 구성 요소는 THttpClient입니다. 먼저 다운로드 작업을 실행하기 위한 THttpClient 객체 FHttpClient를 생성합니다. procedure TFormDownloadDemo.F ...

7월 26일 13:31에 게시됨

Java 멀티스레딩 소개

스레드는 프로세스 내에서 독립적으로 실행되는 하위 작업입니다. 멀티스레딩 기술 사용 시나리오 블로킹(Blocking): 시스템에 블로킹 현상이 발생하면 멀티스레딩 기술을 사용하여 실행 효율을 높일 수 있습니다. 종속성(Dependency): 비즈니스 로직이 두 개의 실행 과정 A와 B로 나뉘는데, A 과정이 블로킹될 때 B 과정은 A 과정의 실행 결과를 필요로 하지 않는다면, ...

7월 24일 00:36에 게시됨

네트워크 프로그래밍 기반의 뱀 게임 개발

서론 네트워크 기반 뱀 게임 프로젝트는 여러 기술적 도전을 극복하며 풍부한 성과를 거두었습니다. 기술적 관점에서, 네트워크 통신 프로토콜의 활용에 능숙해져 플레이어 간 실시간 상호작용을 구현했습니다. 정교하게 설계된 데이터 구조를 통해 뱀의 위치, 상태 및 게임 시나리오를 효율적으로 관리했습니다. 인터페이스 설계에서는 단순하고 직관적인 방식을 추구하 ...

7월 16일 19:53에 게시됨

자바 스레드 풀의 원리와 활용

스레드 풀이란? 스레드 풀은 일종의 작업 스레드 관리 컨테이너로 이해할 수 있다. 애플리케이션이 시작될 때 미리 여러 개의 스레드를 생성하여 풀 안에 보관하고, 작업이 필요할 때마다 새로 스레드를 만들지 않고 이 풀에서 꺼내 사용한다. 작업이 끝나면 스레드는 다시 풀로 반환되어 다음 작업을 기다린다. 기존 방식의 문제점 자바 1.5 이전에는 각각의 작업마다 ne ...

7월 6일 22:41에 게시됨

Java 멀티스레딩 구현과 락 활용 및 실행 결과 처리 기법

기본 스레드 구현: Runnable 인터페이스 활용 Runnable 인터페이스를 구현할 때 주의점: 작업 객체 인스턴스 생성은 반복문 외부에서 수행해야 합니다. 반복문 내에서 생성할 경우 락 동기화가 제대로 동작하지 않습니다. @Controller @RequestMapping("/task") public class TaskProcessor implements Runnable { private final Lock taskLock = new ReentrantL ...

7월 3일 06:30에 게시됨

Chrome의 스레딩과 태스크 처리 방식

개요 크롬은 높은 수준의 멀티스레딩을 활용하는 제품입니다. UI 반응성을 최대한 유지하기 위해 UI 스레드에서 블로킹 I/O나 무거운 연산을 수행하지 않습니다. 스레드 간 통신에는 메시지 전달 방식을 사용하며, 락이나 스레드 안전 객체 사용을 지양합니다. 대신 객체는 단일 스레드에만 존재하고, 스레드 간 통신은 메시지를 주고받으며, 대부분의 교차 스레드 요청에 ...

6월 25일 22:52에 게시됨

스레드 풀 사용 시 주의사항과 모범 사례

스레드 풀 올바르게 선언하기 스레드 풀은 반드시 `ThreadPoolExecutor` 생성자를 통해 수동으로 선언해야 하며, `Executors` 클래스를 사용하여 생성하면 OOM(메모리 부족) 위험이 있습니다. `Executors`가 반환하는 스레드 풀에는 다음과 같은 문제점이 있습니다: `FixedThreadPool`과 `SingleThreadExecutor`: 무제한 `LinkedBlockingQueue`를 사용하며, 큐 크기가 `In ...

6월 1일 18:42에 게시됨