usleep函数

标签:
杂谈 |
分类: GentoouLinuxbuntu |
usleep函数
头文件: unistd.h 语法: void usleep(int micro_seconds);
返回值: 无 内容说明:本函数可暂时使程序停止执行。
参数 micro_seconds 为要暂停的微秒数(us)。
注意:这个函数不能工作在 Windows 操作系统中。参见:usleep() 与sleep()类似,用于延迟挂起进程。进程被挂起放到reday queue。
只是一般情况下,延迟时间数量级是秒的时候,尽可能使用sleep()函数。且此函数已被废 除,可使用nanosleep。如果延迟时间为几十毫秒(1ms = 1000us),或者更小,尽可能使用usleep()函数。这样才能最佳的利用CPU时间
http://topic.csdn.net/u/20110428/07/8db4a274-55fe-436e-be07-00f1d545f264.html
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
#include <pthread.h>
unsigned long long g_millisecond = 0;
void *timer(void *)
{
}
int main(int argc, char *argv[])
{
}
导航
统计
- 随笔 - 1167
- 文章 - 0
- 评论 - 100
- 引用 - 0
常用链接
留言簿(9)
随笔分类
- C/C++(111) (rss)
- CVS(8) (rss)
- DB2(318) (rss)
- DB2CLI(12) (rss)
- DB2k(3) (rss)
- GLASSFISH(1) (rss)
- LINUX/UNIX/AIX(269) (rss)
- makefile(12) (rss)
- PERL(6) (rss)
- Shell(226) (rss)
- SOCKET(65) (rss)
- TOOLS(5) (rss)
- TUXEDO(16) (rss)
- U基础管理(12) (rss)
- 计算机基础(4) (rss)
- 金 融相关(66) (rss)
- 面向对象(10) (rss)
- 日 常技巧(97) (rss)
- 数 据库,SQL(98) (rss)
- 算法(6) (rss)
- 系统、备份等(25) (rss)
- 组 件(2) (rss)
随笔档案
- 2010年12月 (1)
- 2010年11月 (4)
- 2010年10月 (10)
- 2010年9月 (18)
- 2010年8月 (10)
- 2010年7月 (5)
- 2010年6月 (3)
- 2010年5月 (46)
- 2010年4月 (25)
- 2010年3月 (56)
- 2010年2月 (36)
- 2010年1月 (50)
- 2009年12月 (30)
- 2009年11月 (21)
- 2009年10月 (19)
- 2009年9月 (44)
- 2009年8月 (111)
- 2009年7月 (71)
- 2009年6月 (37)
- 2009年5月 (52)
- 2009年4月 (89)
- 2009年3月 (59)
- 2009年2月 (37)
- 2009年1月 (33)
- 2008年12月 (60)
- 2008年11月 (14)
- 2008年10月 (52)
- 2008年9月 (64)
- 2008年8月 (110)
文章分类
UNIX
信用卡
搜索
最新评论 http://www.cppblog.com/images/xml.gif
- 1.
re: linux下system函数调用shell命令后,怎样让主进程不等子进程返回,接着执行 - 用exec满足你
- --fei
- 2.
re: Web报表工具iReport 详解 - huoyannan_no1@163.com可以发一份给我嘛?不甚感激呀!
- --倪泽大卫
- 3.
re: ODBC数据类型定义 - 谢谢
- --sss
- 4.
re: 把UltraEdit加入到右键菜单中(转贴) - 谢谢!!!
- --good
- 5.
re: SQL语言的CASE语句 - 评论内容较长,点击标题查看
- --Mike
阅读排行榜
评论排行榜
关于短延迟 sleep usleep nanosleep select
mdelay(unsigned long msecs);
前者用软件循环指定的微妙数,后者调用前者达到延迟毫秒级。udelay 函数只能用于获取较短的时间延迟,因为loops_per_second值的精度只有8位,所以,当计算更长的延迟时会积累出相当大的误差。尽管最大能允 许的延迟将近1秒(因为更长的延迟就要溢出),推荐的 udelay 函数的参数的最大值是取1000微秒(1毫秒)。延迟大于 11 毫秒时可以使用函数 mdelay。
要特别注意的是 udelay 是个忙等待函数(所以 mdelay 也是),在延迟的时间段内无法运行其他的任务,因此要十分小心,尤其是 mdelay,除非别无他法,要尽量避免使用。
mdelay 在 Linux 2.0 中并不存在,头文件 sysdep.h 弥补了这一缺陷。
关于 usleep sleep 主要的差距在精确程度上,不过网友有关于这个方面的精辟论断:
同样我觉得select也是比较好的定时机制,不过大家可以看 igmp-proxy的源代码。主函数里面用setitimer和select同时定时 是一个相当好的想法。
#################################################################
再 论精确延时(usleep,nanosleep,select)
#include <stdio.h>;
#include <stdlib.h>;
#include <time.h>;
#include <sys/time.h>;
#include <errno.h>;
#include <string.h>;
#include <unistd.h>;
#include <sys/types.h>;
#define PRINT_USEAGE { \
}
int
main (int argc, char **argv)
{
unsigned int nTimeTestSec =
0;
unsigned int nTimeTest =
0;
struct timeval tvBegin;
struct timeval tvNow;
int ret = 0;
unsigned int nDelay =
0;
fd_set rfds;
struct timeval tv;
int fd = 1;
int i = 0;
struct timespec req;
unsigned int delay[20] =
int nReduce =
0;
#if 0
if (argc < 2)
nDelay = atoi (argv[1]);
#endif
fprintf (stderr, "ssss\n", "function", "time(usec)",
"realTime",
fprintf (stderr,
for (i = 0; i < 20; i++)