Launching Thread Using Function Objects
Function Objects or Functors can also be used for launching a thread in C++. The following code snippet demonstrates how it is done:
Example:
C++
// Define the class of function object class fn_object_class { // Overload () operator void operator()(params) { Statements; } } // Create thread object std:: thread thread_object(fn_object_class(), params) |
Note: We always pass parameters of the callable separately as arguments to the thread constructor.
Multithreading in C++
Multithreading is a feature that allows concurrent execution of two or more parts of a program for maximum utilization of the CPU. Each part of such a program is called a thread. So, threads are lightweight processes within a process.
Multithreading support was introduced in C++11. Prior to C++11, we had to use POSIX threads or <pthreads> library. While this library did the job the lack of any standard language-provided feature set caused serious portability issues. C++ 11 did away with all that and gave us std::thread. The thread classes and related functions are defined in the <thread> header file.
Syntax:
std::thread thread_object (callable);
std::thread is the thread class that represents a single thread in C++. To start a thread we simply need to create a new thread object and pass the executing code to be called (i.e, a callable object) into the constructor of the object. Once the object is created a new thread is launched which will execute the code specified in callable. A callable can be any of the five:
- A Function Pointer
- A Lambda Expression
- A Function Object
- Non-Static Member Function
- Static Member Function
After defining the callable, we pass it to the constructor.
Contact Us