zoukankan      html  css  js  c++  java
  • QNX系统-关于delay函数与sleep函数的区别

    QNX是类unix系统。
    在c语言编程过程中,往往会用到delay或者sleep延时函数。两者之间在使用上有一定的区别!!!
    delay()是循环等待,该进程还在运行,占用处理器。   
    sleep()不同,它会被挂起,把处理器让给其他的进程。
    
    sleep()参数指定暂停时间,单位是s   
    delay()参数指定暂停时间,单位是ms
    usleep功能:
    暂停执行。 语法: void usleep(int micro_seconds); 返回值: 无 函数种类: PHP 系统功能 内容说明:本函数可暂时使程序停止执行。参数 micro_seconds 为要暂停的毫秒数(微妙还是毫秒?)。 注意:这个函数不能工作在 Windows 操作系统中。参见:usleep() 与sleep()类似,用于延迟挂起进程。进程被挂起放到reday queue。
      只是一般情况下,延迟时间数量级是秒的时候,尽可能使用sleep()函数。
      且,此函数已被废除,可使用nanosleep。
      如果延迟时间为几十毫秒,或者更小,尽可能使用usleep()函数。这样才能最佳的利用CPU时间
    
    delay:
    函数名: delay 
      功 能: 将程序的执行暂停一段时间(毫秒) 
      用 法: void delay(unsigned milliseconds); 
      程序例: 
      /* Emits a 440-Hz tone for 500 milliseconds */ 
      #include<dos.h> 
      int main(void) 
      { 
      sound(440); 
      delay(500); 
      nosound(); 
      return 0; 
      }
    


    附:QNX下相关解释

    delay()

    Suspends a calling thread for a given length of time

    Synopsis:

    #include <unistd.h>
    
    unsigned int delay( unsigned int duration );

    Arguments:

    duration
    The number of milliseconds for which to suspend the calling thread from execution.

    Library:

    libc

    Use the -l c option to qcc to link against this library. This library is usually included automatically.

    Description:

    The delay() function suspends the calling thread for duration milliseconds. 

    sleep()

    Suspend a thread for a given length of time

    Synopsis:

    #include <unistd.h>
    
    unsigned int sleep( unsigned int seconds );

    Arguments:

    seconds
    The number of realtime seconds that you want to suspend the thread for.

    Library:

    libc

    Use the -l c option to qcc to link against this library. This library is usually included automatically.

    Description:

    The sleep() function suspends the calling thread until the number of realtime seconds specified by the seconds argument have elapsed, or the thread receives a signal whose action is either to terminate the process or to call a signal handler. The suspension time may be greater than the requested amount, due to the nature of time measurement (see the Tick, Tock: Understanding the Neutrino Microkernel's Concept of Time chapter of the QNX Neutrino Programmer's Guide), or due to the scheduling of other, higher priority threads by the system.

    Returns:

    0 if the full time specified was completed; otherwise, the number of seconds unslept if interrupted by a signal.

    Examples:

    /*
     * The following program sleeps for the
     * number of seconds specified in argv[1].
     */
    #include <stdlib.h>
    #include <unistd.h>
    
    int main( int argc, char **argv )
    {
        unsigned seconds;
    
        seconds = (unsigned) strtol( argv[1], NULL, 0 );
        sleep( seconds );
        
        return EXIT_SUCCESS;
    }
    一分耕耘,一分收获!
  • 相关阅读:
    Swift的闭包(一):闭包简介、闭包表达式的优化
    iOS 用户体验之音频
    【iOS】Core Bluetooth
    【iOS】3D Touch
    golang中channel的超时处理
    Objective-C 中的 BOOL
    2015年总结
    load vs. initialize
    正则表达式
    When does layoutSubviews get called?
  • 原文地址:https://www.cnblogs.com/splovecyk/p/4386146.html
Copyright © 2011-2022 走看看