Как использовать сокет в win32 - PullRequest
1 голос
/ 13 января 2010

Я создал программу-сокет для запуска в службе win32, но проблема, с которой я сталкиваюсь, заключается в том, что когда я запускаю службу, она запускается, и она использует ЦП, перемещая все свои 50% ЦП. Я использую 64-битный процессор AMD.

Если я напишу программу без сокета, она не будет так сильно использовать процессор.

Ват я должен сделать, чтобы решить эту проблему.

Ответы [ 2 ]

2 голосов
/ 13 января 2010

Вам, вероятно, нужно взглянуть на что-то вроде <a href="http://msdn.microsoft.com/en-us/library/ms740141%28VS.85%29.aspx" rel="nofollow noreferrer">select()</a>, чтобы заблокировать при ожидании чтения данных.

Без подробностей трудно точно сказать, в чем заключается ваша проблема, но, скорее всего, это что-то подобное.

0 голосов
/ 13 января 2010

Да, пример кода может помочь, но проблема, скорее всего, в том, что вы находитесь в цикле тайм-аута. В зависимости от того, на какой стороне соединения клиент / сервер вы находитесь, это можно решить, вызвав accept () или select () с бесконечным таймаутом. На практике лучше иметь длительное время ожидания, порядка секунды, чтобы процесс / поток мог найти сигнал и завершить работу, если потребуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...