Говоря педантично, ваше приложение уже использует все ядра.Как вы сказали выше, для процесса не выделено ни одного конкретного ядра (если вы не приложите явных усилий для привязки вашего процесса к одному конкретному ядру).
Процесс использует все ядра, но использует их последовательно : он работает немного на одном ядре, затем немного больше на другом ядре и так далее.Т.е. в среднем процессорное время, которое потребляет ваше приложение, распределяется равномерно по всем ядрам системы.Поскольку в любой момент времени используется только одно ядро, загрузка ЦП никогда не превысит 25% -ный предел (ваша система, очевидно, имеет 4 ядра).
Если вы хотите преодолеть 25% -й предел,Вы должны иметь возможность использовать два или более ядра одновременно , а это означает, что по крайней мере часть кода должна работать параллельно .Для этого приложение должно быть написано специально для параллельной работы.Обычное однопоточное приложение никогда не сделает это само по себе.