编程之美第一题,参考某同事的算法和文章
2010-03-25 14:43
260 查看
Process p = Process.GetCurrentProcess();
const double SPLIT = 0.01;
const int COUNT = 200;
const double PI = 3.14159265;
const int INTERVAL = 100;
double[] busySpan = new double[COUNT]; //array of busy times
double[] idleSpan = new double[COUNT]; //array of idle times
int half = INTERVAL / 2;
double radian = 0.0;
for (int i = 0; i < COUNT; i++)
{
busySpan[i] = (double)(half + (Math.Sin(PI * radian) * half));
idleSpan[i] = INTERVAL - busySpan[i];
radian += SPLIT;
}
double startTime = 0;
int j = 0;
while (true)
{
j = j % COUNT;
startTime = Environment.TickCount;
p.ProcessorAffinity = (IntPtr)0x0001;
while ((Environment.TickCount - startTime) <= busySpan[j]) ;
p.ProcessorAffinity = (IntPtr)0x0002;
while ((Environment.TickCount - startTime) <= idleSpan[j]) ;
j++;
}
const double SPLIT = 0.01;
const int COUNT = 200;
const double PI = 3.14159265;
const int INTERVAL = 100;
double[] busySpan = new double[COUNT]; //array of busy times
double[] idleSpan = new double[COUNT]; //array of idle times
int half = INTERVAL / 2;
double radian = 0.0;
for (int i = 0; i < COUNT; i++)
{
busySpan[i] = (double)(half + (Math.Sin(PI * radian) * half));
idleSpan[i] = INTERVAL - busySpan[i];
radian += SPLIT;
}
double startTime = 0;
int j = 0;
while (true)
{
j = j % COUNT;
startTime = Environment.TickCount;
p.ProcessorAffinity = (IntPtr)0x0001;
while ((Environment.TickCount - startTime) <= busySpan[j]) ;
p.ProcessorAffinity = (IntPtr)0x0002;
while ((Environment.TickCount - startTime) <= idleSpan[j]) ;
j++;
}
相关文章推荐
- C语言实现全排列(部分算法参考网友,可实现重复字符的组合)
- PHP正则表达式学习参考的文章
- 序列化--收藏于网络一篇文章(仅供忘记时自己参考)
- 一篇介绍标签库很详细的文章,可以做为参考手册
- page rank 算法 参考链接
- [同事文章] 软件项目版本号的命名格式
- Subversion 参考文章
- 【POJ2796】代码,非原创,参考的别人的文章
- 优秀文章参考
- nltk参考文章
- 使用vmware vdp备份2008虚机时,如果出错可以参考这篇文章。
- [同事的原创文章] JavaScript 面向对象编程
- redis 参考文章
- 文章标题WERTYUIOP[ 每日一到算法题]
- 结构之法算法之道CSDN博客-第一、二期全部博文集锦[CHM 文件下载]
- 八大排序经典算法(图解+参考源代码)
- 分享两遍不错的文章,有关快速排序,用JS写的,有需要的朋友可以参考一下
- 网站架构-参考文章
- 【笔试面试题】腾讯2013实习生面试算法题及参考答案
- linux参考文章