2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
||||||
1 | ||||||
Работа с Socket и перегруз08.08.2018, 23:25. Показов 550. Ответов 9
Метки нет (Все метки)
Добрый день ! Недавно наткнулся на статью в которой говорилось о том что если запустить бесконечный цикл в другом потоке то возрастает загрузка ЦП. Решил посмотреть у себя и действительно после коннекта загруз цп с 3% поднялся до 50 % . Как я понял решается это проблема Слипом . Только вот не могу понять как мне его прикрутить ((
0
|
08.08.2018, 23:25 | |
Ответы с готовыми решениями:
9
Socket и работа с ним! Работа с listen socket WinCE работа с Socket через ActiveSync Socket перенаправить в другой Socket |
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
|
09.08.2018, 16:36 [ТС] | 3 |
А как вы тогда предлагаете отслеживать приход сообщения ?
Добавлено через 3 минуты А чем вам не понравилось добавление в Лист байт ?
0
|
09.08.2018, 17:18 | 4 |
Recived отработает только тогда, когда на порт поступят данньіе. Просто ждите его отработки, чейкайте сколько считали и отправляйте данньіе дальше на обработку.
Побайтово? Почему не побитово, чего мелочится? Вообще тут логичнее Memory заюзать. А еще логичнее вообще повесить поверх TextReader, и не изобретать велосипед. Или вообще обьявить базовый меседжер, заюзать бинарную сериализацию, и радоватся жизни (трафик правда подскочит). Можно оставить и list.Add, тут єто не главная проблема.
0
|
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
||||||||||||||||
09.08.2018, 17:27 [ТС] | 5 | |||||||||||||||
Т.е пока в буффере есть что забирать . я забираю
а вот
0
|
09.08.2018, 18:50 | 6 |
убирите цикл, while (socket.Available > 0) он там не нужен от слова "совсем".
Еще раз Recived отработает только тогда, когда на порт поступят данньіе. До это поток будет спать, не дергая процессор. Проверять "если данные" не нужно. Если поток закроют, то Recived вернет 0. Ну и оберните в try-catch, чтобы отлавливать разрыв связи. "Решение" через Sleep -- УГ, просто замаскируете проблему, причем (1) на самом деле даст задержку в 100, и будет тоже выжирать CPU в никуда.
0
|
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
|||||||||||
09.08.2018, 18:58 [ТС] | 7 | ||||||||||
Я просто вас не понимаю . Покажите наглядно ( кодом если возможно ) . просто я делал
Добавлено через 4 минуты
0
|
09.08.2018, 19:09 | 8 |
нет, проверять буфер вообще не нужно.
Оно. Если и после єтого сьедает 50% (кстати, при двух подключениях должно вообще бьіло улетать под 100%), то нужно смотреть дальше.
0
|
2 / 2 / 1
Регистрация: 09.01.2015
Сообщений: 382
|
||||||
09.08.2018, 19:16 [ТС] | 9 | |||||
Ура !!! Упало . до 14 , но при закрытии периодически вылетают ошибки по
0
|
09.08.2018, 19:20 | 10 |
1
|
09.08.2018, 19:20 | |
09.08.2018, 19:20 | |
Помогаю со студенческими работами здесь
10
Невозможно создать Socket: Socket sock = new Socket(someHostString,somePortInt); Работа с socket' а ми Перегруз Работа с Socket(ами) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |