←Select platform

MaximumThreadCount Property

Summary
Gets or sets the maximum number of threads used during processing.
Syntax
C#
VB
C++
public static int MaximumThreadCount { get; set; } 
Public Shared Property MaximumThreadCount As Integer 
public: 
static property int MaximumThreadCount { 
   int get(); 
   void set (    int ); 
} 

Property Value

An Int32 value that represents the maximum number of threads used during processing. Must be a value greater than or equals to 0. Default value is the number of CPUs/Cores in the current machine (System.Environment.ProcessorCount).

Remarks

Currently only the LEADTOOLS JPEG2000 Encoder and Decoder are using this property. More LEADTOOLS encoders/decoders may use this property in the future.

Using two threads with a dual core machine or two CPUs will increase the processing speed significantly if the processing supports parallel processing.

Possible values are:

Value Description
0

The toolkit will pick the proper number of running threads based on the number of CPUs/Cores of the current machines. Note: the toolkit will calculate this value internally and set it. Getting the value of this property will never return 0.

1 Use one thread only. In this case, the toolkit will not create extra threads for the processing, instead, all operations will be performed in the main thread.
2 Use two threads. The toolkit will create a maximum of two threads for processing if needed.
N Use N threads. The toolkit will create a maximum of N threads for processing if needed.

Values less than zero will be rejected. Large values, more than the number of CPU/Cores, will not increase performance and might cause resource usage overload which could lead to processing failure.

The MaximumThreadCount property is a global resource used by all LEADTOOLS and is not thread-safe. Make sure to use property thread synchronization if required.

Example
C#
VB
using Leadtools; 
using Leadtools.Codecs; 
 
 
private void RasterDefaultsMaximumThreadCountExample() 
{ 
	using (RasterCodecs codecs = new RasterCodecs()) 
	{ 
		//This is a speed test using multithreading JPEG2000 load, to conduct this test correctly the machine has to have multiple CPUs/Cores. 
		RasterImage image; 
 
		//This is just load the binaries. 
		image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Image1.j2k")); 
 
		// Load with MaximumThreadCount equal to the number of CPUs/Cores first. 
		RasterDefaults.MaximumThreadCount = 0; 
		DateTime time = DateTime.Now; 
		image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Image1.j2k")); 
		Console.WriteLine(" JPEG2000 load time {0} / thread {1}", DateTime.Now - time, RasterDefaults.MaximumThreadCount); 
 
		// Load with MaximumThreadCount equal one. 
		RasterDefaults.MaximumThreadCount = 1; 
		time = DateTime.Now; 
		image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Image1.j2k")); 
		Console.WriteLine(" JPEG2000 load time {0} / thread {1}", DateTime.Now - time, RasterDefaults.MaximumThreadCount); 
		image.Dispose(); 
	} 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\LEADTOOLS21\Resources\Images"; 
} 
Imports Leadtools 
Imports Leadtools.Codecs 
Imports Leadtools.ImageProcessing 
 
Private Sub RasterDefaultsMaximumThreadCountExample() 
   Using codecs As New RasterCodecs 
 
      'This is a speed test using multithreading JPEG2000 load, to conduct this test correctly the machine has to have multiple CPUs/Cores. 
      Dim image As RasterImage 
 
      'This is just load the binaries. 
      image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Image1.j2k")) 
 
      'Load with MaximumThreadCount equal to the number of CPUs/Cores first. 
      RasterDefaults.MaximumThreadCount = 0 
      Dim time As DateTime = DateTime.Now 
      image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Image1.j2k")) 
      Console.WriteLine(" JPEG2000 load time {0} / thread {1}", DateTime.Now - time, RasterDefaults.MaximumThreadCount) 
 
      'Load with MaximumThreadCount equal one. 
      RasterDefaults.MaximumThreadCount = 1 
      time = DateTime.Now 
      image = codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "Image1.j2k")) 
      Console.WriteLine(" JPEG2000 load time {0} / thread {1}", DateTime.Now - time, RasterDefaults.MaximumThreadCount) 
      image.Dispose() 
   End Using 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const ImagesDir As String = "C:\LEADTOOLS21\Resources\Images" 
End Class 
Requirements

Target Platforms

Help Version 21.0.2021.7.2
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.

Leadtools Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.