作业信息
班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP
作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK15
作业正文:2022-2023-1 20221312 《计算机基础与程序设计》第十五周学习总结 - 221421李旻奇 - 博客园 (cnblogs.com)
我觉得评分的脑子有点问题,只有有图才能证明学了吗?
学习目标:计时器(C语言sleep函数与system函数的使用)
system()的头文件为<stdlib.h>,功能是调用系统指令 Sleep()为“睡眠函数”,头文件为<Windows.h>,功能是使程序停下一段时间(时间由你自定义,参数为毫秒)
例子:定时关机
输入:system("shutdown -s -t xx");//时间单位为秒根据需要输入所设定的时间,system函数的参数是字符串,必须使用“”包括;
清屏代码为:system("cls");
sleep函数相关细节:Sleep(0) 的意义是放弃当前线程执行的时间片,把自身放到等待队列之中。
注意:(1)Sleep是区分大小写的,有的编译器是大写,有的是小写。
(2)Sleep括号里的时间,在windows下是已毫秒为单位,而Linux是以秒为单位
sleep(0)能够降低当前线程的执行速 度,比如:现在系统中有100个线程(先假设是线程吧)在执行不同的任务,并且它们执行的优先级都是一样的,并且它们每一次分配的时间片的长度都是一样 的。那么现在当前线程中有一个Sleep(0),那么对于当前线程获得时间片的等待时间延长了1倍,也就是说相当于 200 个时间片之后再得到时间片执行任务。
标准库中无该函数但是某些编译系统中有,在有些系统库中有,要根据你那边的环境而定(windos与Linux中存在不同)
linux中有,unsigned int sleep(unsigned int seconds),传入挂起时间,成功返回0,不成功则返回余下的秒数。
windows系统中有Sleep函数(注意大写),void Sleep(DWORD dwMilliseconds); 提供挂起的毫秒数。
总结原理:Sleep就是结束当前时间片,把自己挂起,进入等待队列,等待dwMilliseconds毫秒时间后,再进入就绪队列,直到获得时间片运行。(与学过的知识吻合)
什么是时间片
在宏观上:我们可以同时打开多个应用程序,每个程du序并行不悖,同时运行。
但是在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。
所以:
时间片即CPU分配给各个程序的时间,每个线程被分配一个时间段,称作它的时间片,即该进程允许运行的时间,使各个程序从表面上看是同时进行的。如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则CPU当即进行切换。而不会造成CPU资源浪费。在宏观上:我们可以同时打开多个应用程序,每个程序并行不悖,同时运行。但在微观上:由于只有一个CPU,一次只能处理程序要求的一部分,如何处理公平,一种方法就是引入时间片,每个程序轮流执行。
(见课本计算机科学概论)
Sleep()函数的使用
头文件:Windows下为--> windows.h
Linux 下为 --> unistd.h
注意:如果是在GUI界面中的话,是不推荐使用Sleep()的,它会直接阻塞住GUI 线程,造成你的界面卡住,这对于用户体验上来说,是非常不妙的,在多线程中使用比较合适,能够更多的控制线程。特别是在Python中,经常使用Sleep(),用它来防止线程阻塞。
计时器具体实现由嵌套循环使用:
while (1)
{
min = 0;
for (min = 0; min < 60; min++)//每60秒分钟加一
{
s = 0;
for (s = 0; s < 60; s++)
{
printf("%02d:%02d:%02d", h, min, s);//每秒打印一次
Sleep(970);//为什么休眠0.97秒呢?因为程序自身运行需要时间
system("cls");//清空屏幕
}
}
h++;//每60分钟小时加一
}
运行效果:
讽刺吗?
看不懂字是吧?
这种拿已知的东西拍成图,没有一点思考的东西有意义吗?
我在第三周就说了反思总结是我自己看的。按照我自己的节奏走,学什么?重要内容有哪些?
有图片别人容易理解了对我一点用也没有。
书上有的看懂了不必过多赘述,看不懂的把怎么看懂的思路,资料,重点写下来
网上的资源也一样,什么都抄什么都写,对反思一点用都没有,我不是上课,我是总结。
标签:时间,min,20221421,system,线程,2022,2023,Sleep,CPU From: https://www.cnblogs.com/lmq221421/p/16969618.html