Multi-threading allows you to execute portions of your code concurrently. While on a single CPU the benefits of multi-threading are limited, multi-core systems allow true concurent execution, thus reducing the time it takes for the task to finish.
The basic threading is easy, you just declare a function and run it in thread.
#include <thread>
#include <iostream>
using namespace std;
void complicatedCalculation1()
{//Do stuff here}
void complicatedCalculation2()
{//Do stuff here}
int main()
{
//Creates a thread and starts it
thread calc1Thread(complicatedCalculation1);
//Creates a thread and starts it
thread calc2Thread(complicatedCalculation1);
//Wait for each thread to finish
calc1Thread.join();
calc2Thread.join();
cout<<"All done"<<endl;
return 0;
}