Требуется сделать копию файла. Я делаю это с помощью 10ти потоков(функция потока привел ниже). Проблема в том, что скорость копирования на порядок ниже чем у утилиты cp. В чем может быть причина проблемы?
struct argument {
FILE *fin, *fout;
bool done;
} argument;
void *tread_function(void *arg) {
struct argument *p = (struct argument *)arg;
FILE *fin = p->fin, *fout = p->fout;
signed char byte;
do {
sem_wait(&semaphore);
byte = fgetc(fin);
if (!feof(fin)) fputc(byte, fout);
sem_post(&semaphore);
} while (!feof(fin));
p->done = 1;
}