用C写个取暖器【转贴】

来源:互联网 发布:看美股的软件 编辑:程序博客网 时间:2024/04/27 21:22
        冬天到了,叶子掉了,大雁们排成B字形或者T字形往南飞,程序员却还要在严寒中偎依着冰冷的电脑忧郁地玩着键盘。作为一个优秀的程序员,我们可以用程序解决除了老婆以外的所有问题,何况是小小的寒风呢。下面我们就用C来写一个取暖器。
    理论上的分析是,电脑是耗费电力的,这部分电除了发光发声以外,都用在发热上面了。简单说来,CPU,硬盘,乃至内存都会因为工作而发热。考虑到程序的通用性,我们不考虑显卡声卡光驱,我们用内存读写来让内存发热,用大量计算来使CPU发热,用文件读写来加热硬盘,最后可以让电脑成为一个小小的取暖器。
让CPU发热的代码如下:

DWORD WINAPI CPUHotter(PVOID para)
{
    while(1);
    return 1;
}

让内存发热的代码如下:

DWORD WINAPI MemHotter(PVOID para)
{
    char *Mem = new char[10000];
    while(1)
    {
            for(int i=0;i<10000;i++)
            {
                      Mem[i] = 0x99;
            }
    }
    return 1;
}

最后是让硬盘发热的代码:

DWORD WINAPI DiskHotter(PVOID para)
{
  FILE *fp;
  fp = fopen("_", "a+");
    while(1)
    {
        for(int i=0;i<10000;i++)
        {
              fwrite("1", 1, 1, fp);
        }
        rewind(fp);
    }
    return 1;
}

main函数创建上面三个线程就可以了。本代码在Athlon 1.26 + 256M + VC 6.0的环境下编译并运行成功,Windows 2000下运行了三天,室内温度持续上升中,拟申请国家专利。受到开源思想的感化,特放出源代码,希望给各位带来一个温暖的冬天。
谢谢。

Posted by swan at November 30, 2005 08:51 PM
Comments

......

Posted by: fuju at November 30, 2005 10:16 PM

swan很幽默的总。。。。。

Posted by: mrcool at November 30, 2005 10:56 PM

我倒....

Posted by: sunwear at December 1, 2005 03:25 AM

如果没有这种水平的菜鸟们呢,就可以考虑把你家电脑CPU上的风扇卸掉,直接用脚踩上去.如果你本身散热条件比较好的话,理论上在寒冷的冬天比用取暖气来的方便实惠.而且基本不需要什么技术.

Posted by: zv at December 1, 2005 11:33 AM

haha,发热量最大的是显卡,连续打游戏吧:)

Posted by: icbm at December 1, 2005 11:39 AM

char *Mem = new char[10000];

抗议。明明是c++ : )

Posted by: wofeiwo at December 1, 2005 12:28 PM

cpu 发热那个,应该加入一些随机复杂跳转,这样可以让指令流水线多猜错,这样才够hot,hoho

内存那个,顺序来意义不大,得每隔 128bit 读写一下,降低 L2 cache 的命中率,这样才够hot,hoho

硬盘也是类似,取暖么,先建立无缓存文件,再读入硬盘扇区、柱面、磁头等等参数,跳着写,绝对不然硬盘好受,这样才够hot,hoho

Posted by: flier at December 1, 2005 02:25 PM

那三件给你这们玩,还不如买个电炉。。呵呵。。

想法真的很好。高手就是高手

Posted by: Perl_21cn at December 1, 2005 04:34 PM