IRONSOFTWAREHOME

최대 병렬 스레드 설정 방법

Curtis Chau
Curtis Chau
Updated: 2025년 11월 30일

대량의 바코드를 읽을 때 단일 스레드 프로세스에 의존하면 성능 병목 현상이 발생하여 확장성이 제한될 수 있습니다. 그러나 병렬 스레드를 사용하면 응용 프로그램이 여러 이미지를 동시에 처리할 수 있어 전체 처리 능력이 효과적으로 증가하고 배치 작업을 완료하는 데 소요되는 시간을 크게 단축할 수 있습니다.

이러한 스레드의 최대 한도를 설정하는 것은 성능을 최적화하는 강력한 방법입니다. 이것은 응용 프로그램이 프로세서 코어 간의 작업 부하를 균형있게 배분함으로써 하드웨어의 잠재력을 최대한 활용할 수 있도록 보장합니다. 이 접근 방식은 효율성을 극대화하여 응용 프로그램이 빠른 결과를 제공하면서 매끄럽게 실행될 수 있도록 합니다.

IronBarcode는 이 한도를 간단하게 제어할 수 있는 방법을 제공하여 최적의 기계 성능을 보장합니다. 다음 섹션에서는 이러한 스레드 제한을 쉽게 설정하는 방법을 보여줍니다.



최대 병렬 스레드 설정

이 예제에서는 대량의 바코드 이미지를 사용하여 단일 스레드 프로세스 대신 멀티 스레드 프로세스를 사용한 확장성과 효율성을 설명합니다. 이미지 폴더를 여기에서 다운로드할 수 있습니다.

IronBarcode가 하나 이상의 스레드를 사용하도록 구성하려면, 먼저 Multithreaded를 true로 설정한 새 BarcodeReaderOptions 개체를 인스턴스화합니다. 그 후 정수 값을 할당하여 MaxParallelThreads 속성을 설정합니다. 기본적으로 MaxParallelThreads는 4로 설정됩니다.

설정 구성이 완료된 후, 대량의 바코드 이미지가 폴더에서 가져옵니다. 그 후, 루프를 사용하여 구성된 BarcodeReaderOptions과 함께 파일 경로를 전달하는 Read 메서드를 사용하여 바코드 이미지 디렉토리를 읽습니다. 마지막으로, BarcodeResults에 액세스하여 바코드 값과 유형을 표시합니다.

using Google.Protobuf.WellKnownTypes;
using IronBarCode;
using System;
using System.IO;

int maxParallelThreads = 4;


var optionsFaster = new BarcodeReaderOptions
{
    // Set Max threads to 4
    Multithreaded = true,
    MaxParallelThreads = maxParallelThreads,
};

// Dynamically get the "images" folder in the current directory
string folderPath = Path.Combine(Directory.GetCurrentDirectory(), "images");

// Retrieve all JPG files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");

foreach (var file in pdfFiles)
{
    // Read the barcode
    var results = BarcodeReader.Read(file, optionsFaster);

    foreach (var result in results)
    {
        // Show the type and value for every barcode found
        Console.WriteLine($"Value: {result.Value}, Type: {result.BarcodeType}");

    }

}
C#

산출

멀티 스레드 출력

콘솔 출력에 표시된 것처럼, 각 해당 이미지의 바코드 값과 유형이 표시됩니다.

적절한 최대 병렬 스레드 설정

Multithreaded 속성이 true로 설정되면 MaxParallelThreads 속성이 기본적으로 4가 됩니다. MaxParallelThreads에 할당한 정수에 대한 하드 제한은 없지만, 하드웨어의 논리 코어 용량을 초과하도록 설정하면 실제로 성능이 감소할 수 있습니다. 이는 프로세서가 과도한 컨텍스트 스위칭을 처리할 수 없어 오히려 오버헤드가 발생할 가능성이 있기 때문입니다. 따라서 MaxParallelThreads의 올바른 값은 컴퓨터의 사양에 따라 다르며 개발자는 최적의 값을 찾기 위해 테스트해야 합니다.

이 예에서 우리는 동일한 멀티 스레드 시나리오를 타이머와 함께 비교하여 기본값 4와 모든 사용 가능한 스레드를 활용하기 위해 Environment.ProcessorCount을 사용할 때의 성능 차이를 보여줄 것입니다. 우리의 경우, 논리 프로세서가 32개인 컴퓨터를 사용하고 있으며, 따라서 Environment.ProcessorCount은 32로 설정됩니다.

using IronBarCode;
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;

// Set the max parallel threads to the number of processor cores
int maxParallelThreads = Environment.ProcessorCount;


var optionsFaster = new BarcodeReaderOptions
{
    // Set Max threads to the number of processor cores
    Multithreaded = true,
    MaxParallelThreads = maxParallelThreads,
    ExpectMultipleBarcodes = true,
};

// Start timing the process
var stopwatch = Stopwatch.StartNew();
// Dynamically get the "images" folder in the current directory
string folderPath = Path.Combine(Directory.GetCurrentDirectory(), "images");

// Check if directory exists to prevent crashes
if (!Directory.Exists(folderPath))
{
    Console.WriteLine($"Error: The directory '{folderPath}' does not exist.");
    return;
}

// Get all JPG files in the directory
var pdfFiles = Directory.GetFiles(folderPath, "*.jpg");

foreach (var file in pdfFiles)
{
    // Read the barcode
    var results = BarcodeReader.Read(file, optionsFaster);

    if (results.Any())
    {
        Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}");
        foreach (var result in results)
        {
            Console.WriteLine($"  Value: {result.Value}, Type: {result.BarcodeType}");

        }
    }
}

stopwatch.Stop();

// Print number of images the barcode reader could decode
Console.WriteLine($" Max parallel threads of {maxParallelThreads} with {stopwatch.Elapsed.TotalSeconds:F2}s");
C#

산출

4개의 스레드를 사용한 처리 시간

4 프로세서

이 프로세스의 처리 시간은 84초입니다.

환경 ProcessorCount를 사용한 처리 시간

32 프로세서

보시다시피, 이 작업의 처리 시간은 53초로, 4개의 스레드만 사용할 때보다 훨씬 빠릅니다. 그러나 더 많은 스레드를 사용하는 것이 성능 향상을 보장하지는 않으며, 이는 호스트 프로세서에 따라 다릅니다. 일반적인 원칙은 사용 가능한 최대 프로세서 수에서 하나를 뺀 수를 사용하는 것이며, 시스템의 다른 운영을 위한 하나의 스레드를 여전히 사용할 수 있도록 보장합니다.

경고: 프로젝트 환경은 멀티 스레딩을 허용하도록 구성되어야 합니다. 그렇지 않으면, Multithreadedtrue로 설정하고 MaxParallelThreads을 증가시키는 것이 속도를 향상시키지 않으며 실제로 속도를 감소시킬 수 있습니다.

자주 묻는 질문

IronBarcode에서 최대 병렬 스레드 수를 설정하는 목적은 무엇입니까?

최대 병렬 스레드 수를 설정하면 시스템 리소스를 효율적으로 사용하여 바코드 생성 성능을 최적화할 수 있으며, 특히 대량의 바코드를 일괄 처리할 때 효과적입니다.

IronBarcode에서 최대 병렬 스레드 수를 어떻게 설정할 수 있나요?

IronBarcode에서 최대 병렬 스레드 수를 구성하려면 C# 코드에서 적절한 메서드를 사용하여 바코드 생성 작업에 필요한 스레드 수를 설정할 수 있습니다.

대량 바코드 생성 시 성능 최적화가 중요한 이유는 무엇일까요?

대량 바코드 생성 성능을 최적화하면 프로세스가 효율적이고 빨라져 대량의 바코드를 생성하는 데 필요한 시간과 리소스를 줄일 수 있으며, 이는 높은 처리량이 요구되는 애플리케이션에 필수적입니다.

IronBarcode에서 병렬 처리를 사용하면 어떤 이점이 있습니까?

IronBarcode의 병렬 처리는 여러 CPU 코어를 활용하여 바코드 생성 속도를 높여 애플리케이션 성능을 향상시키고 대규모 바코드 작업 처리 시간을 단축합니다.

병렬 스레드를 너무 많이 설정하면 성능에 부정적인 영향을 미칠 수 있나요?

네, 병렬 스레드를 너무 많이 설정하면 리소스 경합과 오버헤드가 증가하여 성능이 저하될 수 있습니다. 시스템 성능에 맞는 균형 잡힌 구성을 찾는 것이 중요합니다.

병렬 스레드 수를 선택할 때 어떤 점을 고려해야 할까요?

고려해야 할 사항으로는 사용 가능한 CPU 코어 수, 시스템 작업 부하, 바코드 생성 작업의 특성 등이 있습니다. 최적의 구성을 찾으려면 다양한 설정을 시험해 보는 것이 가장 좋습니다.

IronBarcode에서 병렬 스레드에 대한 기본 설정이 있나요?

IronBarcode는 병렬 스레드에 대한 기본 설정을 제공할 수 있지만, 최상의 성능을 얻으려면 특정 애플리케이션 요구 사항에 따라 이 설정을 사용자 지정하는 것이 좋습니다.

IronBarcode는 스레드 관리를 어떻게 처리하나요?

IronBarcode는 .NET의 스레딩 기능을 활용하여 병렬 처리를 관리하므로 개발자는 성능을 효과적으로 최적화하기 위해 스레드 수를 지정할 수 있습니다.

실행 중에 병렬 스레드 수를 동적으로 변경할 수 있나요?

실행 중에 병렬 스레드 수를 동적으로 변경하는 것은 일관성이 떨어지고 성능 안정성에 영향을 미칠 수 있으므로 권장되지 않습니다. 바코드 생성 프로세스를 시작하기 전에 구성을 설정하는 것이 가장 좋습니다.

바코드 생성 시 최대 병렬 스레드 수를 설정하는 일반적인 사용 사례는 무엇인가요?

일반적인 사용 사례로는 재고 관리 시스템, 소매점 POS 시스템, 대량의 바코드를 신속하게 처리해야 하는 물류 애플리케이션과 같이 고속 바코드 생성이 필요한 애플리케이션이 있습니다.

Curtis Chau
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

...
더 읽어보기

시작할 준비 되셨나요?

Nuget Downloads 2,422,100버전:2026.9방금 출시

지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.
PDF용 C# NuGet 라이브러리
NuGet을 사용하여 설치하세요

버전: 2026.9

PM > Install-Package BarCode
nuget.org/packages/BarCode/
  1. 솔루션 탐색기에서 참조를 마우스 오른쪽 버튼으로 클릭하고 NuGet 패키지 관리를 선택합니다.
  2. 찾아보기를 선택하고 "IronBarCode"를 검색하세요.
  3. 패키지를 선택하고 설치하세요
C# PDF DLL
DLL 다운로드

버전: 2026.9

  1. IronBarCode 파일을 다운로드하고 솔루션 디렉터리 내의 ~/Libs와 같은 위치에 압축을 해제하세요.
  2. Visual Studio 솔루션 탐색기에서 참조를 마우스 오른쪽 버튼으로 클릭합니다. 찾아보기를 선택하고 "IronBarCode.dll"을 선택합니다.

라이선스 가격은 749달러 부터 시작합니다.

Key in blue circle

무료 30일 체험 키를 즉시 받으세요.

Your trial license will be sent to your email address

제한 없음. 100% 무제한 이용. 신용카드 불필요.

bullet_checked신용카드나 계정 생성은 필요하지 않습니다.제한 없음. 100% 무제한 이용. 신용카드 불필요.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
무료 라이브 데모를 예약하세요
Booking Badge

전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.

Iron Software의 고객 로고
부담 없는 무료 상담을 받아보세요
아래 양식을 작성하시거나 sales@ironsoftware.com으로 이메일을 보내주세요.
고객님의 정보는 항상 비밀로 유지됩니다.
전 세계 수백만 엔지니어들이 신뢰하는 제품입니다.
Iron Software의 고객 로고
지금 바로 30일 무료 체험판 키를 받으세요.
신용카드나 계정 생성은 필요하지 않습니다.