Освободите процессорное время в C++ (Windows)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Освободите процессорное время в C++ (Windows)

Сообщение Anonymous »

Я довольно много осмотрелся и не могу найти то, что ищу, но позвольте мне сначала подчеркнуть, что я не ищу высокоточную функцию сна. .

Вот предыстория проблемы, которую я пытаюсь решить:

Я запомнил библиотека сопоставления, которая во многом похожа на именованный канал. Вы можете помещать в него байты, извлекать из него байты и запрашивать, сколько байтов доступно для чтения/записи, и все такое хорошее.

Это быстро (в основном) процессы, взаимодействующие с его использованием, будут в среднем достигать 4 ГБ/с, если они передают фрагменты байтов размером 8 КБ или больше. Производительность падает примерно до 300 МБ/с по мере приближения к размеру фрагмента 512 Б.

Проблема:

Очень редко , на сильно загруженных серверах время задержки будет очень большим (более 5 секунд). Моя теория причины этой проблемы заключается в том, что когда происходят большие передачи (больше, чем размер отображаемой памяти), процесс, записывающий данные, будет жестко опрашивать, ожидая, пока в реализованном кольцевом буфере освободится больше места. поверх карты памяти. Вызовов режима сна нет, поэтому процесс опроса может без веской причины нагружать процессор! Проблема в том, что даже самый маленький вызов сна (1 мс) полностью снижает производительность. Размер карты памяти составляет 16 КБ, поэтому, если она будет спать по 1 мс каждые 16 КБ, производительность упадет до наилучшего сценария — 16 МБ/с.

Решение:

Мне нужна функция, которую я могу вызвать, которая освободит процессор, но не будет ограничения на то, когда оно будет перепланировано операционной системой (в данном случае Windows 7).

Есть ли у кого-нибудь яркие альтернативы?/Кто-нибудь знает, существует ли такая функция?

Спасибо.< /п>

Подробнее здесь: https://stackoverflow.com/questions/183 ... -c-windows
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»