Я учусь на универ-проект, и одним из требований является включение многопоточности. Я решил сделать поиск простых чисел и - пока он работает - он довольно медленный. Я думаю, что это связано с количеством потоков, которые я создаю и уничтожаю.
Мой подход состоял в том, чтобы взять диапазон простых чисел, которые меньше N, и распределить их равномерно по M потокам (где M = количество ядер (в моем случае 8)), однако эти потоки создаются и уничтожаются каждый раз, когда N увеличивается.
Псевдокод выглядит так:
for each core
# new thread
for i in (range / numberOfCores) * currentCore
if !possiblePrimeIsntActuallyPrime
if possiblePrime % i == 0
possiblePrimeIsntActuallyPrime = true
return
else
return
Что работает, но 8 потоков, создаваемых для каждого возможного простого, похоже, замедляют работу системы.
Есть предложения по дальнейшей оптимизации?