public static int MaximumThreadCount { get; set; }
MaximumThreadCount # get and set (RasterDefaults)
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).
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.
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:\LEADTOOLS22\Resources\Images";
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document