Как уменьшить загрузку процессора в C
У меня есть программа, которая работает на машине Linux(64-разрядной) и она потребляет 100% ЦП с меньшим временем выполнения. Он не должен потреблять 100% ЦП, так как другие программы работают на той же машине параллельно. Мне нужно уменьшить время загрузки ЦП моей программы, чтобы она могла передавать ЦП и другим процессам.
Используя sleep
в определенных местах моей программы я могу уменьшить загрузку процессора, но время выполнения увеличивается.
Есть ли способ уменьшить загрузку процессора?
2 ответа
Я полагаю, что это хорошее значение... Просто присвойте своему процессу высокое значение nice, чтобы оно не повлияло на производительность вашей системы... Чем выше значение nice[-20 до 20], тем ниже приоритет процесса. Чтобы присвоить значение nice, используйте следующие шаги: 1. открыть терминал 2.type ps -ef (напечатать все процессы) 3.Найдите свой идентификатор процесса (скажем, 11455 - это идентификатор вашего процесса) 4. renice nicevalue Processid (например:-renice 18 11455)
проверьте ссылку http://www.computerhope.com/unix/renice.htm
Я думаю, что вы можете использовать потоки, thread_A и thread_B и использовать sempahores для передачи сигналов между ними. Семафор спит thread_B, пока thread_A не сгенерирует вывод или не освободит семафор.
thread_A thread_B
| |
|(may/may not be running) | (sleeps)
-->(release semaphore) -->(wakes up thread_B)
| |(works on data and
| | to wait again)
| |
|(may/may not be running) | (sleeps)
-->(release semaphore) -->(wakes up thread_B)
|