c语言sleep用法
C语言标准库中没有sleep这个函数,它实际上是一个系统API函数。函数功能: 执行挂起一段时间1、在VC中使用带上头文件,而且全称为Sleep(),第一个字母需要大写。 #include //需要添加头文件 Sleep(unisgned long); //函数声明 Windows中,Sleep()里面的单位,是以毫秒为单位,所以如果想让函数滞留1秒的话,应该写成: Sleep(1000);2、在gcc中,使用的头文件因gcc版本的不同而不同,一般来说,linux系统需要添加的头文件为: #include 应该是Sleep(1000); 在Linux下,sleep()里面的单位是秒,而不是毫秒。
linux中如何实现sleep(0)的功能
前段时间从windows移植了一个程序到linux上,不知为何性能奇差。查了下原因,发现是由于一个函数ZeroSleep特别耗时,这个函数的代码很简单,如下:
void ZeroSleep()
{
Sleep(0);
}
Sleep(0)作用是用来释放cpu的时间片,避免忙等待。于是想当然的在linux上实现为:
void ZeroSleep()
{
msleep(0);
}
但其实msleep API的源代码如下:
void msleep(unsigned int msecs)
{
unsigned long timeout = msecs_to_jiffies(msecs) + 1;
while (timeout)
timeout = schedule_timeout_uninterruptible(timeout);
}
如此一来,即使参数为0,也至少要睡眠一个jiffies单位的时间,因此导致严重的性能问题。
该问题的解决方法是:
既然ZeroSleep的目的是释放cpu资源,那么就可以通过调用schedule()函数替换msleep 。而且实际上msleep本身也是通过调用schedule_timeout_uninterruptible实现的,所以这个做法也是合理的。
http://tassardge.blog.163.com/blog/static/17230170820100275580656/
Windows这种系统是C语言还是C++开发的啊
WINDOWS系统内核层以C语言为主还有部分C++以及少量的汇编,用户层以C和C++为主 也有汇编。部分应用程序时C#/VB的。而WINDOWS2000则已经有20余万行代码,其中80%是用C++编写,其余部分有C和汇编,底层接口用汇编编写。 所以C++的类的概念就能在这里很好地利用,但是毕竟C++的效率不如标准C及汇编,所以在一些明显以效率为重的地方用的还是标准C及汇编。扩展资料:Windows操作系统是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也当前应用最广泛的操作系统。Windows采用了图形化模式GUI,比起从前的Dos需要输入指令使用的方式,更为人性化。随着计算机硬件和软件的不断升级,微软的 Windows也在不断升级,从架构的16位、32位再到64位,系统版本从最初的 Windows1.0到大家熟知的 Windows95、 Windows98、 Windows2000、 Windows XP、 Windows Vista、 Windows7、Windows8、Windows8.1、Windows 10和Windows Server服务器企业级操作系统,微软一直在致力于Windows操作系统的开发和完善。参考资料:百度百科-Windows操作系统
linux操作系统是用C++还是C语言写的?
Linux是C和C++编写的,以前的小型机的操作系统都是C写的,Linux操作系统是从Unix操作系统演化而来的。由于Linux的内核是完全公开的,因此受到的攻击也比较小,也更加完善。源代码在网上也能查到。
可惜,由于本人水平有限,查到了也读不懂(主要读不懂注释),也许你可以。
另外,用c语言写界面,目前看来简直就是妄想了,一没有必要;二c目前就用在底层。
c只是一种开发语言,在单线程的操作系统中,开发多线程程序是没有必要的,在多线程、多进程操作系统中,如果仍然进行单线程的开发那有些无用了。因此说,单线程的C开发目前在嵌入式操作系统中仍有市场,例如在Windows CE、Linux等操作系统中,单线程编程没有太多的使用价值,个人认为单片机开发似乎还有一些市场。