In this article, we’ll go over what parallel programming is in C++; how a C++ software like C++ Builder can help with parallel programming in C++, and examples of using TParallel in C++ Builder.
What is parallel programming in C++?
Parallel Programming is generally used to solve heavy calculation problems such as real time analysis of multi dimensional data, image processing, calculations on fluid mechanics, thermodynamics and other engineering problems. Parallel Programming is a method which uses multiple computational resources, processors or processing by groups of servers. Generally in this type of programming, it takes a problem, breaks it down into a series of smaller steps, delivers instructions, and processors execute the solutions of each parts at the same time in different Threads, CPU Cores, CPU’s, GPUs.
How does C++ Builder help with parallel programming in C++?
In C++ Builder, the RTL provides the Parallel Programming Library (PPL), giving your applications the ability to have tasks running in parallel taking advantage of working across multiple CPU devices and computers. The PPL includes a number of advanced features for running tasks, joining tasks, waiting on groups of tasks, etc. to process. For all this, there is a thread pool that self tunes itself automatically (based on the load on the CPU’s) so you do not have to care about creating or managing threads for this purpose.
You can use this library by including System.Threading in your apps. This unit is made up of several features that can be included into new and existing projects. The unit also includes a number of overloaded arguments to make it suitable for C++ as well as Delphi.
Using the PPL, your applications can easily:
- Make looping faster with TParallel.For.
- Run multiple tasks in parallel using TTask and ITask.
- Leave a process running focusing on other tasks and then get the result of that process at the point you want. IFuture allows you to establish a priority for the running code blocks and still return the results when needed.
Is there an example of using TParallel in C++ Builder?
This is a very basic TParallel::For() syntax,
1 2 3 |
TParallel::For(0, 10, TProc1<int>([](int I){ // … })); |
This is a simple TParallel::For() example. In this example we used calculate() procure in 32 multi tasks. That means calculate() function can run 32 times simultaneously in different threads of your CPU.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#include <vcl.h> #include <windows.h> #include <iostream> #include <chrono> #include <System.Threading.hpp> // parallel library #pragma hdrstop #pragma argsused double calculate(int I) { double t=0; for(int i=1; i<100000; i++) { for(int j=1; j<10000; j++) { t+=(I+j)/i; } } std::cout << I << ","; return t; } int _tmain(int argc, _TCHAR* argv[]) { TParallel::For(0, 32, TProc1<int>([](int I) { calculate(I); })); Sleep(5000); std::cout << "done"; getchar(); return 0; } |
Design. Code. Compile. Deploy.
Start Free Trial
Free C++Builder Community Edition