Maksimum Paralel İş Parçacıklarını Nasıl Ayarlarım

This article was translated from English: Does it need improvement?
Translated
View the article in English

Büyük hacimde barkod okurken, tek iş parçacıklı bir sürece güvenmek performans darboğazları yaratabilir ve ölçeklenebilirliği sınırlayabilir. Ancak, paralel iş parçacıkları kullanmak, uygulamanızın tek seferde birden fazla görüntüyü işlemesine olanak tanır, böylece toplam işlem gücünü etkili bir şekilde katlayarak bir grup işinin tamamlanma süresini önemli ölçüde azaltır.

Bu iş parçacıklarının maksimum sınırını ayarlamak, performansı optimize etmenin güçlü bir yoludur. Uygulamanın iş yükünü işlemci çekirdekleri arasında dengeleyerek donanımın tam potansiyelinden yararlanmasını sağlar. Bu yaklaşım, uygulamanın en yüksek verimlilikte çalışmasını sağlayarak, mümkün olan en hızlı sonuçları sağlarken sorunsuz bir şekilde çalışır.

IronBarcode, bu sınırı kontrol etmenin basit bir yolunu sunar, böylece optimal makine performansı sağlanır. Aşağıdaki bölümde, bu iş parçacığı sınırlarını nasıl kolayca ayarlayabileceğiniz gösterilmektedir.



Maksimum Paralel İş Parçacıkları Ayarla

Bu örnekte, tek iş parçacıklı bir süreç yerine çok iş parçacıklı bir süreç kullanmanın ölçeklenebilirliğini ve verimliliğini göstermek için büyük bir barkod görüntü seti kullanacağız. Görüntü klasörünü buradan indirebilirsiniz.

IronBarcode'u birden fazla iş parçacığı kullanacak şekilde yapılandırmak için, önce BarcodeReaderOptions nesnesi Multithreaded değeri true olarak ayarlanarak oluşturulur. Ardından, MaxParallelThreads özelliği bir tamsayı değeri atanarak ayarlanır. Varsayılan olarak, MaxParallelThreads değeri 4 olarak ayarlanmıştır.

Ayarlar yapılandırıldıktan sonra, büyük bir barkod görüntüsü sayısı klasörden içe aktarılır. Ardından, bir döngü kullanılarak, dosya yolu ve yapılandırılmış BarcodeReaderOptions geçirilerek Read yöntemi kullanılarak BARCODE görüntü dizini okunur. Son olarak, BarcodeResults adresine erişilerek BARCODE değeri ve türü görüntülenir.

:path=/static-assets/barcode/content-code-examples/how-to/set-max-parallel-thread.cs
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);

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

    }

}

Imports Google.Protobuf.WellKnownTypes
Imports IronBarCode
Imports System
Imports System.IO

Dim maxParallelThreads As Integer = 4

Dim optionsFaster As New BarcodeReaderOptions With {
    .Multithreaded = True,
    .MaxParallelThreads = maxParallelThreads
}

' Dynamically get the "images" folder in the current directory
Dim folderPath As String = Path.Combine(Directory.GetCurrentDirectory(), "images")

' Retrieve all JPG files in the directory
Dim pdfFiles = Directory.GetFiles(folderPath, "*.jpg")

For Each file In pdfFiles
    ' Read the barcode
    Dim results = BarcodeReader.Read(file)

    For Each result In results
        ' Show the type and value for every barcode found
        Console.WriteLine($"Value: {result.Value}, Type: {result.BarcodeType}")
    Next
Next
$vbLabelText   $csharpLabel

Çıktı

Çok iş parçacıklı çıkış

Konsol çıktısında gösterildiği gibi, her bir karşılık gelen görüntü için barkod değeri ve türü görüntülenir.

Uygun Maksimum Paralel İş Parçacıkları Nasıl Ayarlanır

Multithreaded özelliği true olarak ayarlandığında, MaxParallelThreads özelliğinin varsayılan değeri 4 olur. MaxParallelThreads'ye atanan tamsayı için kesin bir sınır olmasa da, değeri donanımınızın mantıksal çekirdek kapasitesinden daha yüksek bir değere ayarlamak, aslında performansın düşmesine neden olabilir. Bu, işlemcinin aşırı bağlam değiştirmeyi kaldıramadığı için potansiyel olarak yük yerine hızla sonuçlanabilir. Bu nedenle, MaxParallelThreads için doğru değer bilgisayarın özelliklerine bağlıdır ve geliştiriciler, kendi ortamları için en uygun değeri bulmak üzere testler yapmalıdır.

Bu örnekte, yukarıdaki çok iş parçacıklı senaryoyu göstereceğiz, ancak mevcut tüm iş parçacıklarını kullanmak için Environment.ProcessorCount kullanılmasıyla varsayılan değer olan 4'ü karşılaştırmak üzere bir zamanlayıcı ekleyeceğiz. MaxParallelThreads Bizim durumumuzda, 32 mantıksal işlemciye sahip bir bilgisayar kullanıyoruz, bu nedenle Environment.ProcessorCount değeri 32 olarak ayarlanacaktır.

:path=/static-assets/barcode/content-code-examples/how-to/set-max-parallel-thread-performance.cs
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);

    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");
Imports IronBarCode
Imports System
Imports System.Diagnostics
Imports System.IO
Imports System.Linq

' Set the max parallel threads to the number of processor cores
Dim maxParallelThreads As Integer = Environment.ProcessorCount

Dim optionsFaster As New BarcodeReaderOptions With {
    .Multithreaded = True,
    .MaxParallelThreads = maxParallelThreads,
    .ExpectMultipleBarcodes = True
}

' Start timing the process
Dim stopwatch As Stopwatch = Stopwatch.StartNew()
' Dynamically get the "images" folder in the current directory
Dim folderPath As String = Path.Combine(Directory.GetCurrentDirectory(), "images")

' Check if directory exists to prevent crashes
If Not Directory.Exists(folderPath) Then
    Console.WriteLine($"Error: The directory '{folderPath}' does not exist.")
    Return
End If

' Get all JPG files in the directory
Dim pdfFiles As String() = Directory.GetFiles(folderPath, "*.jpg")

For Each file As String In pdfFiles
    ' Read the barcode
    Dim results = BarcodeReader.Read(file)

    If results.Any() Then
        Console.WriteLine($"Barcode(s) found in: {Path.GetFileName(file)}")
        For Each result In results
            Console.WriteLine($"  Value: {result.Value}, Type: {result.BarcodeType}")
        Next
    End If
Next

stopwatch.Stop()

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

Çıktı

4 İş Parçacığı ile İşlem Süresi

4 İşlemci

Bu işlemin işlem süresi 84 saniyedir.

Ortam İşlemci Sayısı ile İşlem Süresi

32 İşlemci

Gördüğünüz gibi, bu işlemin işlem süresi 53 saniyedir, bu da yalnızca dört iş parçacığı kullanırken çalıştırmaktan önemli ölçüde daha hızlıdır. Ancak, daha fazla iş parçacığı kullanmanın iyileştirilmiş performansı garanti etmediği unutulmamalıdır, çünkü bu ana bilgisayar işlemcisine bağlıdır. Genel bir kural olarak, kullanılabilir maksimum işlemci sayısını bir azaltmayı öneririz, böylece diğer sistem işlemleri için hala tek bir iş parçacığı kullanılabilir olur.

Uyarı Proje ortamı çok iş parçacıklı işlemlere izin verecek şekilde yapılandırılmalıdır. Aksi takdirde, Multithreaded değerini true olarak ayarlamak ve MaxParallelThreads değerini artırmak işlem hızını artırmayacak, hatta azaltabilir.

Sıkça Sorulan Sorular

IronBarcode'da maksimum paralel iş parçacıkları ayarlamanın amacı nedir?

Maksimum paralel iş parçacıklarını ayarlamak, özellikle büyük miktarda barkodu toplu olarak işlerken sistem kaynaklarını verimli bir şekilde kullanarak barkod üretiminin performansını optimize etmenizi sağlar.

IronBarcode'da maksimum paralel iş parçacıkları nasıl yapılandırılabilir?

IronBarcode'da maksimum paralel iş parçacıkları, barkod oluşturma görevleri için istenen iş parçacığı sayısını ayarlamak için C# kodunuzda uygun yöntemi kullanarak yapılandırılabilir.

Toplu barkod oluşturma performansını optimize etmek neden önemlidir?

Toplu barkod oluşturma performansını optimize etmek, geniş barkod hacimlerini üretmek için gereken süre ve kaynakları azaltarak sürecin verimli ve hızlı olmasını sağlar; bu, yüksek throughput talepleri olan uygulamalar için önemlidir.

IronBarcode'da paralel işlemeyi kullanmanın faydaları nelerdir?

IronBarcode'da paralel işleme, birden fazla CPU çekirdeği kullanarak daha hızlı barkod üretimi sağlar, bu da uygulama performansını artırır ve büyük ölçekli barkod görevleri için işlem süresini azaltır.

Çok fazla paralel iş parçacığı ayarlamak performansı olumsuz etkileyebilir mi?

Evet, çok fazla paralel iş parçacığı ayarlamak kaynak çekişmesine ve artan yüklemeye neden olarak performansı potansiyel olarak azaltabilir. Sistem kapasitenize uygun dengeli bir yapılandırma bulmak önemlidir.

Paralel iş parçacığı sayısını seçerken hangi dikkate alınması gerekenler vardır?

Dikkate alınması gerekenler arasında mevcut CPU çekirdeği sayısı, sistemin iş yükü ve barkod oluşturma görevlerinizin doğası yer alır. Farklı ayarlarla deneme yaparak en uygun yapılandırmayı bulmak en iyisidir.

IronBarcode'da paralel iş parçacıkları için varsayılan ayar var mı?

IronBarcode'un paralel iş parçacıkları için varsayılan bir ayarı olabilir, ancak projenizin özel gereksinimlerine göre bu ayarı özelleştirmeniz, en iyi performansı elde etmek için önerilir.

IronBarcode, iş parçacığı yönetimini nasıl ele alır?

IronBarcode, paralel işlemeyi yönetmek için .NET'in iş parçacığı yeteneklerinden faydalanır ve geliştiricilerin performansı etkili bir şekilde optimize etmek için iş parçacığı sayısını belirtmelerine olanak tanır.

Yürütme sırasında paralel iş parçacıklarının sayısını dinamik olarak değiştirebilir miyim?

Yürütme sırasında paralel iş parçacıklarının sayısını dinamik olarak değiştirmeniz önerilmez, çünkü bu tutarsızlıklara neden olabilir ve performans kararlılığını etkileyebilir. Barkod üretim sürecine başlamadan önce yapılandırmayı ayarlamak en iyisidir.

Barkod üretiminde maksimum paralel iş parçacıklarını ayarlamak için bazı yaygın kullanım durumları nelerdir?

Yaygın kullanım durumları, envanter yönetim sistemleri, perakende satış noktası sistemleri ve yüksek hacimlerde barkod işlemenin hızlı bir şekilde yapılması kritik olan lojistik uygulamaları gibi yüksek hızlı barkod üretimi gerektiren uygulamaları içerir.

Curtis Chau
Teknik Yazar

Curtis Chau, Bilgisayar Bilimleri alanında Lisans Derecesine (Carleton Üniversitesi) sahip ve Node.js, TypeScript, JavaScript ve React konularında uzmanlaşmış ön uç geliştirmeyle ilgileniyor. Sezgisel ve estetik açıdan hoş kullanıcı arayüzleri oluşturma tutkunu, Curtis modern çerçevelerle çalışmayı ve iyi yapı...

Daha Fazla Oku
Başlamaya Hazır mısınız?
Nuget İndirmeler 2,240,258 | Sürüm: 2026.5 just released
Still Scrolling Icon

Hâlâ Kaydırıyor Musunuz?

Hızlıca kanıt ister misiniz? PM > Install-Package BarCode
bir örnek çalıştır dizginizin barkoda dönüştüğünü izle.