(Работа на win32/C++ среда)High CPU потоков чтения синхронно с еще не заполненными ресурсов
У меня есть функция, которая вызывает ReadFile
(синхронно) с фиксированным размером один байт для чтения из SOCKET
ресурс (WINSOCK
). Существует несколько потоков, выполняющих эту функцию. Данные записываются в сокеты снаружи и не находятся под моим контролем. , когда данные еще не записаны, я нахожу, что мой exe
потребляет почти 80% CPU, а использование делится относительно одинаково среди упомянутых потоков (их обычно 4).
как ReadFile
- это ОС api, я бы ожидал, что он будет реализован асинхронно внутренне, чтобы избежать таких проблем. Мой вопрос, почему это происходит, и что я могу сделать, чтобы избежать этого.
Почему вы используете 'ReadFile()', а не 'recv()' или 'WSARecv()'? –