Comment utiliser Async et Multithread
Les termes Asynchrone et Multithreading sont souvent confondues. Les deux méthodes visent à améliorer les performances et l'efficacité des programmes en optimisant l'utilisation des ressources du système et en réduisant la durée d'exécution. Cependant, elles diffèrent dans leur approche, leurs mécanismes et les cas d'utilisation prévus. IronBarcode prend en charge les deux approches. Cet article explore les différences entre eux et la manière de les mettre en œuvre à l'aide d'IronBarcode.
Comment utiliser Async et Multithread
- >Télécharger la bibliothèque C# pour la prise en charge asynchrone et multithread
- Utilisation
ReadAsync
etReadPdfAsync
methods for asynchronous barcode reading from images et PDFs - Activer le multithreading avec l'option Multithreaded est fixé à "true" (vrai)
- Spécifiez le nombre de threads parallèles à l'aide de l'option MaxParallelThreads propriété
- Check the performance comparison between normal, async, et multithreaded barcode reading
Installer avec NuGet
Install-Package BarCode
Télécharger DLL
Installation manuelle dans votre projet
Installer avec NuGet
Install-Package BarCode
Télécharger DLL
Installation manuelle dans votre projet
Commencez à utiliser IronPDF dans votre projet dès aujourd'hui avec un essai gratuit.
Découvrez IronBarcode sur NuGet pour une installation rapide et un déploiement facile. Avec plus de 8 millions de téléchargements, il transforme avec C#.
Install-Package BarCode
Envisagez d'installer le IronBarcode DLL directement. Téléchargez et installez-le manuellement pour votre projet ou sous forme de GAC : {{lienDllAfficher}}
Installation manuelle dans votre projet
Télécharger la DLLLecture asynchrone des codes-barres Exemple
Commençons par comprendre ce qu'est la lecture asynchrone et quels en sont les avantages pour les utilisateurs. La lecture asynchrone permet de réaliser des opérations longues ou bloquantes sans bloquer l'exécution du fil principal. En C#, les utilisateurs peuvent utiliser les mots-clés async et await avec des méthodes prenant en charge des fonctionnalités asynchrones. Cela ne créera pas d'autres fils de discussion, mais libérera le fil de discussion en cours. Bien que le fil principal soit toujours nécessaire pour initier et gérer les tâches, il ne doit pas être exclusivement consacré à une seule tâche. Le fil d'exécution principal est appelé lorsque la méthode asynchrone requiert son intervention, ce qui lui permet de se consacrer à d'autres tâches lorsqu'il n'en a pas besoin, comme les tâches liées aux E/S, telles que la lecture/écriture de fichiers ou les requêtes réseau.
Prenons l'exemple de la lecture des codes-barres. Dans ce scénario, les étapes à suivre seraient les suivantes :
- Lecture du fichier
- Application des options de lecture
Décodage du code-barres
Pendant l'étape "Lecture du fichier", la tâche principale peut être libérée.
Utilisez les méthodes
ReadAsync
etReadPdfAsync
pour lire les codes-barres de manière asynchrone pour les images et les documents PDF, respectivement.
:path=/static-assets/barcode/content-code-examples/how-to/async-multithread-async.cs
using IronBarCode;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
#endregion
public class async_multithread_async
{
public async Task codeAsync()
{
List<string> imagePaths = new List<string>() { "image1.png", "image2.png" };
// Barcode reading options
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
ExpectMultipleBarcodes = true
};
// Read barcode using Async
BarcodeResults asyncResult = await BarcodeReader.ReadAsync(imagePaths, options);
// Print the results to console
foreach (var result in asyncResult)
{
Console.WriteLine(result.ToString());
}
Imports IronBarCode
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks
#End Region
Public Class async_multithread_async
Public Async Function codeAsync() As Task
Dim imagePaths As New List(Of String)() From {"image1.png", "image2.png"}
' Barcode reading options
Dim options As New BarcodeReaderOptions() With {.ExpectMultipleBarcodes = True}
' Read barcode using Async
Dim asyncResult As BarcodeResults = Await BarcodeReader.ReadAsync(imagePaths, options)
' Print the results to console
For Each result In asyncResult
Console.WriteLine(result.ToString())
Next result
Dans l'extrait de code ci-dessus, nous avons instancié une liste de chemins d'images à lire de manière asynchrone par IronBarcode. Pour lire les images, vous pouvez utiliser la méthode ReadAsync
de la classe BarcodeReader. Les utilisateurs peuvent alors spécifier les chemins d'accès à l'image ainsi que les options de lecture.
Cette méthode pour les opérations asynchrones est également disponible pour lire les codes-barres dans les documents PDF, sous le nom de ReadPdfAsync
, qui fait partie de la même classe.
Lire des codes-barres dans un exemple multithread
Contrairement aux opérations asynchrones, le multithreading permet à un processus unique d'être exécuté simultanément dans plusieurs threads. Cela signifie qu'au lieu d'exécuter un processus de manière séquentielle dans un seul thread, le multithreading divise les tâches entre plusieurs threads, ce qui permet une exécution simultanée. Toutefois, pour que le multithreading fonctionne, une machine doit disposer de plusieurs cœurs de CPU, car ces cœurs sont utilisés pour exécuter indépendamment les threads. Tout comme les opérations asynchrones, le multithreading vise à améliorer les performances et la réactivité des applications.
Dans IronBarcode, activez le multithreading en définissant la propriété Multithreaded et en spécifiant le nombre maximum de cœurs pour l'exécution simultanée en utilisant MaxParallelThreads dans BarcodeReaderOptions. La valeur par défaut de MaxParallelThreads est de 4, mais elle peut être ajustée en fonction des cœurs de processeur disponibles.
[{i :(Pour trouver les cœurs disponibles : Gestionnaire des tâches -> onglet Performance -> Cliquez sur CPU. le champ 'Cores' affiche le nombre.)}]
:path=/static-assets/barcode/content-code-examples/how-to/async-multithread-multithread.cs
using IronBarCode;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
List<string> imagePaths = new List<string>(){"test1.jpg", "test2.png"};
// Barcode reading options
BarcodeReaderOptions options = new BarcodeReaderOptions()
{
Multithreaded = true,
MaxParallelThreads = 4,
ExpectMultipleBarcodes = true
};
// Read barcode with multithreaded enabled
BarcodeResults results = BarcodeReader.Read(imagePaths, options);
// Print the results to console
foreach (var result in results)
{
Console.WriteLine(result.ToString());
}
Imports IronBarCode
Imports System
Imports System.Collections.Generic
Imports System.Threading.Tasks
Private imagePaths As New List(Of String)() From {"test1.jpg", "test2.png"}
' Barcode reading options
Private options As New BarcodeReaderOptions() With {
.Multithreaded = True,
.MaxParallelThreads = 4,
.ExpectMultipleBarcodes = True
}
' Read barcode with multithreaded enabled
Private results As BarcodeResults = BarcodeReader.Read(imagePaths, options)
' Print the results to console
For Each result In results
Console.WriteLine(result.ToString())
Next result
Comparaison des performances
Lisons maintenant les deux images ci-dessous et comparons le temps de lecture des opérations normales, asynchrones et multithread.
Exemple d'image
Lecture normale | Lecture asynchrone | Lecture multithread (4 cœurs) |
---|---|---|
01.75 secondes | 01.67 secondes | 01.17 secondes |
Le tableau comparatif montre clairement que les performances augmentent de manière significative lorsque la lecture asynchrone et multithread est mise en œuvre. Toutefois, ces deux opérations répondent à des objectifs et à des approches différents. Les utilisateurs doivent donc déterminer quelle approche convient le mieux à l'application qu'ils construisent.
Enfin, il peut arriver que plusieurs codes-barres soient présents sur un même document. Pour plus d'informations, visitez le site Lecture de plusieurs codes-barres guide.