Operating system 如何编写一个使用30%CPU的程序?

Operating system 如何编写一个使用30%CPU的程序?,operating-system,cpu-usage,Operating System,Cpu Usage,这是一个面试问题:编写一个使用30%CPU的程序?您将如何编写这样一个程序?也许这不是您所期望的,但请尝试: #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;

这是一个面试问题:编写一个使用30%CPU的程序?您将如何编写这样一个程序?

也许这不是您所期望的,但请尝试:

#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);
    }
}
#包括
#包括
#包括
#定义IMAX 99999
#定义睡眠9999
int main(int argc,char*argv[]){
龙我;
对于(;;){

对于(i=0;i可能这不是您所期望的,但请尝试:

#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);
    }
}
#包括
#包括
#包括
#定义IMAX 99999
#定义睡眠9999
int main(int argc,char*argv[]){
龙我;
对于(;;){

对于(i=0;i这在我的笔记本电脑上工作

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
Private子表单1\u显示(发送方作为对象_
e作为System.EventArgs)处理我。如图所示
Dim numProc As Integer=Environment.ProcessorCount
对于x作为整数=1到numProc
尺寸t作为新线程。线程(foo的地址)
t、 IsBackground=True
t、 开始()
下一个
端接头
私人副职()
常数使用率为双=0.35'35%
暗睡眠为整数=CInt((1-用法)*100)
调暗stpw作为新秒表
做
stpw.Reset()
stpw.Start()
做
在stpw.ElapsedMilliseconds<100时循环-睡眠
线程。线程。睡眠(睡眠)
环
端接头

和其他人一样,我确实对这个问题的意图感到好奇。

这在我的笔记本电脑上很有效

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
Private子表单1\u显示(发送方作为对象_
e作为System.EventArgs)处理我。如图所示
Dim numProc As Integer=Environment.ProcessorCount
对于x作为整数=1到numProc
尺寸t作为新线程。线程(foo的地址)
t、 IsBackground=True
t、 开始()
下一个
端接头
私人副职()
常数使用率为双=0.35'35%
暗睡眠为整数=CInt((1-用法)*100)
调暗stpw作为新秒表
做
stpw.Reset()
stpw.Start()
做
在stpw.ElapsedMilliseconds<100时循环-睡眠
线程。线程。睡眠(睡眠)
环
端接头

和其他人一样,我真的很想知道这个问题的意图。

在面试官的额头上用凿子。这是关于C语言的系统编程,还是关于使用汇编的问题?这个问题的“领域”是什么?是的,让我们在一个超频到10000太赫兹的64核处理器上测试一下。我怀疑是否投票同意这个问题在关闭或面试官开火时重复:特例是在面试官的额头上用凿子。这是关于C语言的系统编程,还是关于使用汇编的问题?问题的“领域”是什么?是的,让我们在64核处理器超频到10000太赫兹的情况下测试一下。我对投票结束这个问题表示怀疑d或面试官重复:特例现在你只需要读取cpu利用率,并动态调整数字直到达到30%现在你只需要读取cpu利用率,并动态调整数字直到达到30%