Aiming to increase the performance when generating the source code of the project’s applications in Scriptcase, it was implemented the possibility to use more than one processor core (more than one thread) simultaneously, ie, instead of generating the source code of only one application at a time we can set how many processors core will be used.
Multithreading is a very popular programming model that allows the execution of multiple line of execution within a single context, multiple actions to be performed sharing resources and process independently. The “Line of Command” programming model provides the developer a simultaneous execution. However, it is way more interesting when it is used in a simple process allowing a parallel execution on multi-processor systems.
The many-to-one model maps many user level threads to processor cores. The threads management is done in user requariment, but the whole process will be blocked. Moreover, since only one thread can access the processor at a time, multiple threads are unable to run in parallel multiprocessor.
The one-to-one model maps each user thread for a single core processor, generates more competition than the many-to-one model. It allows another thread to run while a thread performs a blocking system call. It also allows multiple threads to execute in parallel on multiprocessors. The only disadvantage of this model is that creating a user thread requires creating the corresponding processing thread.
The many-to-many model multiplexes many user-level threads to a smaller or equal to the processor cores. The number of processor threads can either be specific to a particular application as for a particular machine. Developers can create as many user threads as necessary, and the corresponding processor threads can run in parallel on a multiprocessor. Furthermore, when a thread performs a blocking system call, the processor can schedule another thread for execution.
The threads configuration on Scriptcase can be found in Options > Settings. The “Quantity of compilations in parallel” by default is set to 5 and may vary from 1 to 100. The other option is there if we will “Display the compile-time of the applications individually” or collectively for all applications.
Below is a screenshot of the new functionality in operation.