У меня такая проблема - При выполнении моей программы нагрузка на процессор большая (в диспечере 50 цп хавает). PHP: while(true) { if(a==1) { } } Какие есть варианты? 1. Thread.Sleep(100) - меньше нагрузка но выполнение очень долгое. 2. Application.DoEvents() - воще не из этой оперы. Прошу вашей помощи!
А что этот код должен делать? Есть ли другие операторы внутри if? То, что вы привели, называется циклом бездействия. Он и должен загружать процессор по полной, т. к. просто крутится в цикле без задержек. Если вам надо просто подождать какое-то время - используйте sleep, если нужно что-то синхронизировать - семафоры. В любом случае, трудно что-то предложить, не зная назначения кода.
В моэй программе алгоритм написан нормально. Это я как пример написал. При написании выше указаного кода ЦП будет 100 . Вот вопрос как можно его уменьшить. Возможно приоритет потока уменьшить...
Воланд я те код свой не дам. Поверь там все написано нормально. Есть вопрос не по моему коду, а по данному коду . НУ ладно допустим у меня такой код PHP: int a=0,b=1; while(true) { ...// Тут переменная a и b меняется по каким-то причинам if(a==b) { } } Вот ЦП 100 и что ж делать
Дожили. При while(true) у тебя в любом случае загрузка процессора будет 100%, если ты внутри этого цикла не поставишь ожидание.
Что препятствует установке задержки, например, 1мс внутри цикла? Сразу снизит нагрузку до 0. P.S. Вродебы....
Да, это - бесконечный цикл. Нагрузка на проц при sleep() идет из-за реализации оджидания, на Delphi решалось через waitforsingleobject. Тогда даже 1мс при бесконечном цикле снижала нагрузку до 0.
обожэмой... автор неадекват, лечись. тебе объяснили несколько человек в чём причина, че тупишь? не индус случаем? топай сюда. мир, братюнь.
Из-за того, что поток позволяет на некоторое время процессору переключить контекст. А ивенты, думаю, и в шарпе не отменяли. А бесконечный цикл вполне может иметь место, например, при зашифровывании большого количества данных или при поиске по тексту. Тогда нагрузка действительно будет большая.
Еба и какая разница . Я просто спросил как убрать нагрузку! И написал пример. Понятно что такого гамна у меня нету в проге. Это ПРОСТО ПРИМЕР. ЕСЛИ ПИШЕШ 1мс нагрузка не уменьшуется ! Тут такая проблема что ивент не очень подойдет. Хотя ... если не трудно напиши код по моему примеру. Прям Пророк
1.Пример адекватный давать нада! 2.Тебе уже сказали как сделать.Синхронизировать обработку данных с появлением новых данных.Что бы камень не молотил лишнии циклы.
Я не вижу особой проблемы при нагрузке на процессор при шифровании данных. Тот же WinRAR будет грузить проц во время запаковки файлов. Другое дело, если надо делать это незаметно, но C# в таком случае не совсем подойдет.