Есть некоторая функция double a(int x). Выполняется она довольно долго, причём для разных иксов — разное время.
Нужно эту a(x) профигачить 1000 раз (для x=0..999) и записать то, что она возвращала, в массив mass_a. Так, чтобы mass_a[0] было равно a(0), mass_a[1]— a(1) и т.д.
Как сделать так, чтобы софтина выполнялась в несколько потоков на мультипроцессорных системах? Ведь пока одно ядро считает a(0), второе может считать a(1) — скорость работы кода возрастает в два раза. Вроде бы как, такое делают через pthreads (причём оно на C), но ещё Boost предоставляет что-то подобное, в общем я толком не разобрался.
Хотелось бы, чтобы число потоков можно было задавать переменной.
Короче, как такое обычно делают, и насколько сильно вырастет код? Да, и придётся ли как-то обезопасить массив mass_a от одновременной записи с обоих потоков, или никакого вреда от этого нет (не то что в случае работы с файлом)?