Всё равно можно сделать это проще:
Ну проще это никак не выглядит
И при этом запускающая остается не у дел (а задействовать ее было хорошей идеей). Кроме того Ваш метод не общий, предполагается что size > nthread.
1) Да нет, проще же)
2) Запускающая нить не остаётся не у дел) Она всегда отрабатывает, причём в неё заряжается интервал, размером size/nthreads
3) Предложенный метод общий - он работает и в случае size == nthreads
пояснение: Если size кратен или равен nthreads, то m == 0. Это означает, что все нитки получат интервалы одинаковой длины size/nthreads.
В противном случае будет выполнятся условие 0 < m < nthreads. При этом запускающая нитка всегда получает интервал size/nthreads
Часто встречается такая задача: есть N треугольников, их площади известны. Распределить по ним заданное число точек, ну напр 100.
В смысле есть N площадей и m точек и их нужно разбить на N групп так, чтобы размер каждой был пропорционален соответствующей площади?