Труба 1 МБ:
if (0 == CreatePipe(&hRead,&hWrite,0,1024*1024))
{
printf("CreatePipe failed\n");
return success;
}
Отправка 4000 байтов за раз (bytesReq = 4000)
while ((bytesReq = (FileSize - offset)) != 0)
{
//Send data to Decoder.cpp thread, converting to human readable CSV
if ( (0 == WriteFile(hWrite,
readBuff,
bytesReq,
&bytesWritten,
0) ) ||
(bytesWritten != bytesReq) )
{
printf("WriteFile failed error = %d\n",GetLastError());
break;
}
}
Only 4 bytes at a time being read in at another thread, on other end of pipe.
Когда я сделал трубу меньше, общее время отправки и чтения стало намного меньше.
Изменен размер трубы на -
1024 * 1024 = 2 минуты (оригинальный размер)
1024 * 512 = 1 мин 47 с
10 000 = 1 мин 33 с
Все, что ниже 10 Кб, 1 мин 33 с
Как это может быть?