这是一个面试问题:编写一个使用30%CPU的程序?你会怎么写这样的节目?
答案 0 :(得分:3)
也许这不是您的预期,但请尝试:
#include <unistd.h>
#include <stdio.h>
#include <time.h>
#define IMAX 999999
#define SLEEP 9999
int main( int argc, char *argv[] ) {
long i;
for(;;) {
for(i=0; i<IMAX; i++) {}
usleep(SLEEP);
}
}
试验SLEEP长度。这个给了我笔记本25%的负载。 IMAX 999给出了76%。 没有睡觉= 100%。
答案 1 :(得分:1)
这适用于我的笔记本电脑
Private Sub Form1_Shown(sender As Object, _
e As System.EventArgs) Handles Me.Shown
Dim numProc As Integer = Environment.ProcessorCount
For x As Integer = 1 To numProc
Dim t As New Threading.Thread(AddressOf foo)
t.IsBackground = True
t.Start()
Next
End Sub
Private Sub foo()
Const usage As Double = 0.35 '35%
Dim sleep As Integer = CInt((1 - usage) * 100)
Dim stpw As New Stopwatch
Do
stpw.Reset()
stpw.Start()
Do
Loop While stpw.ElapsedMilliseconds < 100 - sleep
Threading.Thread.Sleep(sleep)
Loop
End Sub
我确实像其他人一样怀疑这个问题的意图。