T his is a very simple approach taken to generate the Fibonacci series through multithreading. Here instead of a function, used a function object. The code is very simple and self-explanatory. #include <iostream> #include <mutex> #include <thread> class Fib { public: Fib() : _num0(1), _num1(1) {} unsigned long operator()(); private: unsigned long _num0, _num1; std::mutex mu; }; unsigned long Fib::operator()() { mu.lock(); // critical section, exclusive access to the below code by locking the mutex unsigned long temp = _num0; _num0 = _num1; _num1 = temp + _num0; mu.unlock(); return temp; } int main() { Fib f; int i = 0; unsigned long res = 0, res2= 0, res3 = 0; std::cout << "Fibonacci series: "; while (i <= 15) { std::thread t1([&] { res = f(); }); // Capturing result to respective variable via lambda std::thread t2([&] { res2 = f(); }); std::thread t3(