Я читаю книгу Эндрю и Брейси «Все о программировании». В настоящее время я использую параллелизм и наткнулся на эту функцию:
void smoothParallel(image_t * src, image_t * dst, int nThreads){
int perThread = src->height/ nThreads + 1;
int extras = src->height/nThreads;
...
pthread_t * threads = malloc(nThreads * sizeof(*threads));
for(int i = 0; i < nThreads; i++){
...
perThread--;
}
thr_arg * arg = malloc(sizeof(*arg));
arg->src = src;
arg->dst = dst;
arg->startY = curr;
arg->endY = curr + perThread;
curr += perThread;
pthread_create(&threads[i], NULL, smoothThread, arg);
for (int i = 0; i < nThreads ; i++) {
pthread_join(threads[i], NULL);
}
}
Итак, то, что я не мог понять, это int perThread = src->height/nThreads + 1;
, почему это nThreads + 1
не просто nThreads
, я знаю, что это наивно есть что спросить, но я не мог понять причину этого.