Как реализовывается многопоточность программы?
Тебе ещё много всего нужно изучить, прежде чем приступить к этому.Ведь, используя 4 ядра вместо 2-х, можно получить и более высокую производительность, верно?
Не всегда. Если алгоритмы, которые можно "распараллелить", если те, которые нельзя.Но как это реализовывается?
У любой актуальной ОС есть такие сущности, как процессы и потоки (threads). И у большинства языков есть средства для работы с этим всем
Касательно c++
1. Апи oc и либы абстрагирующие их (std::thread сюда же)
2. https://software.intel.com/ru-ru/blogs/2011/11/21/... разновидность 1. но этот подход довольно сильно отличается от библиотек поэтому стоит вынести отдельно.
3. Cuda www.nvidia.ru/object/cuda-parallel-computing-ru.html 
4. Opencl https://www.khronos.org/opencl/ тоже что и Cuda но без привязки к nvidia
5. SIMD intrinsics не многопоточность, но параллельное исполнение на уровне процессора.
Пример обертки https://github.com/QuantStack/xsimd которая их использует.