我有一个在linux(64位)机器上运行的程序,它占用100%的CPU,执行时间更短。它不应该消耗100%的CPU,因为其他程序并行运行在同一台机器上。我需要减少我的程序的CPU利用时间,这样它也可以将CPU提供给其他进程。
通过在我的程序中的某些位置使用sleep
,我可以降低CPU利用率,但执行时间会增加更多。
有没有降低CPU利用率的方法?
答案 0 :(得分:1)
我认为它的价值很高......只需为您的流程分配高优值,这样就不会影响您的系统性能......更高的优值[-20到20]会降低流程的优先级。 要分配好的值,请使用以下步骤 开放终端 2.type ps -ef(打印所有程序) 3.找到您的程序ID(比如11455是您的程序ID) 4. renice nicevalue Processid(例如:-renice 18 11455)
答案 1 :(得分:0)
我认为你可以使用线程,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)
|