What is Multithreading?
Multithreading is the ability of a CPU (or software) with multi-core processors to execute multiple threads concurrently. In CAD software, this means breaking down tasks (like drawing regeneration, rendering, file operations, etc.) so they can run in parallel, potentially improving performance.
Multithreading In CAD Software
Both AutoCAD and BricsCAD utilize multithreading, but with different levels of application. BricsCAD generally utilizes multithreading in more operations and tasks than AutoCAD, which is comparatively designed to primarily use single threading in most tasks save graphically demanding ones, such as rendering or regenerating (redrawing) a 3D model. A significant portion of BricsCAD’s graphical tasks use parallel processing by default, wherein the loading and processing of a task is divided between two or more cores to enable faster visual performance.
Where AutoCAD uses multithreading:
- Rendering: 2D and 3D renderings use multiple threads effectively.
- File loading/saving: Multithreaded to enhance processing speed.
- Regeneration (REGEN command): Parallelized by default in newer versions.
- Plotting and publishing: Partially multithreaded.
Where BricsCAD uses multithreading:
- Rendering: 2D and 3D renderings use multiple threads effectively.
- File loading/saving: Process is parallel by default, allowing for faster processing.
- Regeneration (REGEN command): Parallelized by default.
- Redrawing: Parallelized by default
- Point Cloud Processing: Fully multithreaded, can be optionally parallelized.
- 3D Modeling Operations: Most 3D modeling operations are multithreaded.
- BIM Classification: Multithreaded process by default, can be optionally parallelized.
- Blockify (AI Feature): Enables repeating sets to be converted to block definitions, multithreaded by default.
- Plotting and publishing: Fully multithreaded.
Control Variables
AutoCAD and BricsCAD both possess system variables that can be modified to enable multithreading in specific operations. AutoCAD uses the WHIPTHREAD variable to enable multithreading for operations such as regeneration of the drawing, renderings, and other graphically demanding tasks. BricsCAD uses the MTFLAGS variable to allow for the manual enabling of multithreading when regenerating drawings, rendering, point cloud indexing, and more. It should be noted that BricsCAD does possess a WHIPTHREAD variable as well, but at the time of writing, this variable is not supported, with its functions being performed instead by MTFLAGS.
WHIPTHREAD
WHIPTHREAD is a system variable in AutoCAD that controls the use of additional processors to improve the speed of specific operations, such as regenerating a drawing. The default value of this variable is 1, with (at the time of writing) 4 different value options available for selection:
Value | Result |
0 | Operations are restricted to a single processor. |
1 | Regeneration processes are distributed across multiple processors. |
2 | Redrawing processes are distributed across multiple processors. |
3 | Both regeneration and redrawing processes are distributed across multiple processors. |
Note: This variable will not function if your device has only a single processor.
MTFLAGS
MTFLAGS is a system variable in BricsCAD that controls multithreading behavior across various operations. The variable is a bit-coded integer, wherein different bits enable or disable a specific multithreaded feature. This allows for manual tuning of multithreading based on your hardware and workflow needs. The variable can be found in the BricsCAD settings, following the path of Program Options > System > Multi-Threading Flags.
MTFLAGS Variables
Toolbox BSB is based on BricsCAD Pro V25, with the default value of MTFLAGS being 3015, enabling an expanded set of multithreaded features. All bit values are listed below, with the features enabled by default labeled as such:
Bit Value | Feature |
0 | No parallel processing |
1 | Parallel regeneration of display (Default Enabled) |
2 | Parallel redraw of display (Default Enabled) |
4 | Parallel loading of drawings (Default Enabled) |
8 | Parallel hidden line removal |
16 | BIM section generation (separate files) |
32 | BIM section generation (same file) |
64 | Direct Modeling operations (Default Enabled) |
128 | Assembly modeling operations (Default Enabled) |
256 | Sheet Metal operations (Default Enabled) |
| 512 | Interference checking (Default Enabled) |
1024 | Delayed XREF loading |
2048 | Point cloud operations (Default Enabled) |
Customizing MTFLAGS
You can control the level of bit value (and thus, fine tune the variable to fit your hardware) by disabling and enabling specific features. Disabling or enabling features subtracts or adds the corresponding bit value. For example:
Disabling point cloud threading (bit 2048):
3015 - 2048 = 967 → MTFLAGS = 967
This keeps most performance benefits while reducing memory or CPU load on certain systems.
MTFLAGS Issues
It is recommended, when using this variable, to customize and see what works best for your hardware. If an issue arises with device CPU load, it may be prudent to reduce the number of features active. If you notice a significant drop in performance, or an error occurring when using one of the features controlled by MTFLAGS, it is recommended to set the variable to a value of 0, then re-enable features one by one in order to parse where the error lies.
While the variable controls well-known and long-standing CAD features, such as drawing regeneration, higher bit values (like 3015) can include bits used for more complex or newer workflows, such as:
- BIM section generation
- Assembly and sheet metal operations
- XREF and point cloud enhancements
These features are safe for modern systems but may cause instability on older hardware or legacy files.