Я искал вокруг топи c, но меня немного смущает количество различных техник, и я не уверен, как подойти к моей проблеме.
У меня есть функция, которая вычисляет некоторое значение, но оно основано на случайных числах, и я хочу вычислить это значение несколько раз, скажем, несколько десятков или сотен раз, и взять среднее его значение, но так как оно занимает довольно много Некоторое время я хотел использовать многопроцессорность, при этом каждый процесс выполнял эту функцию, сохраняя результат, а затем просто суммировал результаты и делил их на количество рабочих процессов в основном процессе.
Довольно просто в теории, но я понятия не имею, как это сделать - кажется, что простым способом было бы просто сделать что-то вроде
loop that creates pipes
if (fork())
loop that reads the outputs of pipes
else
code of function that computes the desired value
, но это как-то кажется неправильным? Я действительно не уверен, как это сделать
РЕДАКТИРОВАТЬ: Чтобы адресовать комментарии, я думал о чем-то вроде этого:
for (int i = 0; i < n_children; ++i) {
if (fork() == 0) { //child process
x += estimation();
}
}
for (int i = 0; i < n_children; ++i) //waiting for each process to end
wait(NULL);
x /= n_children;
, но я знаю, что это не будет работать правильно, я не знаю, как сохранить / синхронизировать результаты