Как отмечается в некоторых комментариях, вы не увидите никакой загрузки системы на матрице 3x3.Стоимость порождения новых потоков слишком высока.
В общем, вы можете попробовать потокобезопасную очередь задач.По сути, просто обычная очередь с семафорами в нужных местах.Поместите все индексы, которые еще нужно вычислить, в очередь.Каждый поток захватывает следующий индекс с начала очереди (удаляя его), а затем вычисляет и заполняет соответствующую ячейку матрицы решения, прежде чем выбрать другое задание из очереди.Мне кажется, что потокобезопасные реализации очередей довольно распространены, поэтому не должно быть сложно найти такую для ваших целей.
Это дает дополнительное преимущество, заключающееся в том, что вы можете добавлять больше потоков в режиме реального времени или удалять их, если хотите.Это более общий способ распараллеливания вещей.