Как уменьшить загрузку процессора в 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)

|

Другие вопросы по тегам