当前位置: 首页 > news >正文

衡水精品网站建设报价做网站价钱

衡水精品网站建设报价,做网站价钱,网站文章更新怎么做,产品设计公司招聘一、相关时间函数1. gettimeofday()2. time()3. clock() 二、间隔定时器1. setitimerval()2. getitimerval()3. 实时定时器的使用 三、为阻塞操作设置超时1. alarm()2. 给read()设置读超时 一、相关时间函数 1. gettimeofday() 获取日历时间。 #include sys/time.…一、相关时间函数1. gettimeofday()2. time()3. clock() 二、间隔定时器1. setitimerval()2. getitimerval()3. 实时定时器的使用 三、为阻塞操作设置超时1. alarm()2. 给read()设置读超时 一、相关时间函数 1. gettimeofday() 获取日历时间。 #include sys/time.hint gettimeofday(struct timeval *tv, struct timezone *tz); timeval结构体 struct timeval {time_t tv_sec; // 秒suseconds_t tv_usec; // 微秒long int }; 2. time() 返回自Epoch格林威治标准时间1970.01.01 0:00AM以来的秒数。 #include time.htime_t time(time_t *timep); 参数timep存储返回的时间。若timep为空则直能从函数返回值获得。 time_t t time(NULL); 3. clock() 计时函数。返回值为从程序启动到调用该函数所占用CPU的时间实际为CPU时钟计时单元clock tick数。 #include time.hclock_t clock(void) ; 由于不同系统或编译器对于每秒的时钟单元数定义不同所以直接输出会有所不同。所以还定义了常量CLOCKS_PER_SEC表示一秒钟会有多少个时钟计时单元其定义如下 #define CLOCKS_PER_SEC ((clock_t)1000) CLOCKS_PER_SEC在Linux 4.15.0-32-generic系统上数值为1000000。 二、间隔定时器 1. setitimerval() 使用系统调用setitimer()来创建间隔定时器这种定时器会在一定时间后到期并可以在到期后每隔一段时间到期一次。 #include sys/time.hint setitimer(int which, const struct itimerval *new_value,struct itimerval *old_value); which参数的可选项 ITIMER_REAL 以真实时间计时到期产生SIGALARM信号ITIMER_VIRTUAL 以虚拟时间用户模式下CPU时间计时ITIMER_PROF 创建profiling定时器以内核态与用户态CPU时间总和计时到期会产生SIGPROF信号itimerval结构体 struct itimerval {struct timeval it_interval; // 间隔定时器的间隔时间struct timeval it_value; // 定时器到期的剩余时间 }; 其中it_value表示距离定时器到期的剩余时间it_interval记录定时器的周期时间或不进行周期性定时it_interval中两个值同为0时表示没有周期性定时即一次性定时器。若进行周期性定时则在每次到时后会将it_interval重新存储倒计时的间隔时间。 2. getitimerval() 获取定时器当前状态。 #include sys/time.hint getitimerval(int which, struct itimerval *curr_value ); curr_value存储定时器当前状态其内容与调用setitimerval()返回的old_value内容相同。 3. 实时定时器的使用 /* 运行说明./timer 1 800000 1 0第二个参数为倒计时的秒数第三个参数为倒计时的微秒数第四个参数为定时器间隔时间的秒数第五个参数为定时器间隔时间的微秒数后四个参数可以省略默认为 2 0 0 0 */#include iostream #include string.h #include sys/time.h #include signal.hstatic volatile sig_atomic_t gotAlam 0;/* 打印时间includeTimer表示是否为第一次打印第一次只打印前两个数字 */ static void displayTimes( const char *msg, bool includeTimer ) {struct itimerval itv;static struct timeval start; // 起始状态struct timeval curr; // 当前状态static int callNum 0; // 当前函数被调用次数if( callNum 0 ) {if( gettimeofday( start, nullptr ) -1 ) {perror( gettimeofday );}}/* 每20行打印一次提示信息 */if( callNum % 20 0 ) {printf( Elapsed Value Interval\n);}if( gettimeofday( curr, NULL ) -1 ) {perror( gettimeofday );}printf(%-7s %6.2f, msg, curr.tv_sec - start.tv_sec (curr.tv_usec - start.tv_usec) / 1000000.0 );/* 可以打印后两个数字 */if( includeTimer ) {if( getitimer( ITIMER_REAL, itv ) -1 ) {perror( getitimer );}printf( %6.2f %6.2f, itv.it_value.tv_sec itv.it_value.tv_usec / 1000000.0, itv.it_interval.tv_sec itv.it_interval.tv_usec / 1000000.0);}printf(\n);callNum; }/* 信号处理函数 */ static void sigalrmHandler( int sig ) {gotAlam 1; }int main( int argc, char **argv ) {struct itimerval itv;clock_t preClock;int maxSigs 0; // 信号触发最大次数int sigCnt 0; // 信号已触发次数struct sigaction sa;sigemptyset( sa.sa_mask );sa.sa_flags 0;sa.sa_handler sigalrmHandler;if( sigaction( SIGALRM, sa, NULL ) -1 ) {perror( sigaction );}maxSigs ( itv.it_interval.tv_sec 0 itv.it_interval.tv_usec 0 ) ? 1 : 3;displayTimes( start:, false );itv.it_value.tv_sec (argc 1) ? atoi( argv[1] ) : 2;itv.it_value.tv_usec (argc 2) ? atoi( argv[2] ) : 0;itv.it_interval.tv_sec (argc 3) ? atoi( argv[3] ) : 0;itv.it_interval.tv_usec (argc 4) ? atoi( argv[4] ) : 0;if( setitimer( ITIMER_REAL, itv, 0 ) -1 ) {perror( setitimer );}preClock clock();while( true ) {while( ( clock() - preClock ) * 10 / CLOCKS_PER_SEC 5 ) {/* 定时器时间到 */if( gotAlam ) {gotAlam false;displayTimes( ALARM:, true );sigCnt;if( sigCnt maxSigs ) {printf(Thats all folk\n);exit( EXIT_SUCCESS );}}}preClock clock();displayTimes( Main:, true );} } 三、为阻塞操作设置超时 1. alarm() 创建一次性实时定时器。 #include unistd.hunsigned int alarm(unsigned int seconds); seconds表示倒计时的秒数。到期后会发送SIGALARM信号。 调用alarm(0)可以屏蔽所有现有定时器。 2. 给read()设置读超时 #include iostream #include string.h #include sys/time.h #include signal.h #include unistd.h using namespace std;const int BUFFER_SIZE 200;/* 信号处理函数 */ static void handler( int sig ) {printf(caught signal\n); }int main( int argc, char **argv ) {struct sigaction sa;char buf[BUFFER_SIZE];ssize_t numRead;int savedErrno;sa.sa_flags ( argc 2 ) ? SA_RESTART : 0;sigemptyset( sa.sa_mask );sa.sa_handler handler;if( sigaction( SIGALRM, sa, NULL ) -1 ) {perror(sigaction);}/* 设置倒计时 */alarm( (argc 1) ? atoi(argv[1]) : 10 );numRead read( STDIN_FILENO, buf, BUFFER_SIZE - 1 );savedErrno errno;alarm(0); // 将现有定时器屏蔽errno savedErrno;if( numRead -1 ) {if( errno EINTR ) { // read系统调用被信号打断即收到超时信号printf(Read timed out\n);} else {perror(read);}} else { // 未超时printf(Successful read %ld bytes : %.*s, long(numRead), int(numRead), buf);}exit(EXIT_SUCCESS); }
http://www.zqtcl.cn/news/328719/

相关文章:

  • 怎样创建个人购物网站wordpress没有外观
  • 衡水手机网站建设公司计算机大专学历有用吗
  • 有哪些网站做的很好桐乡市建设局官方网站
  • 做公众号和网站一样吗免费正能量网站下载ww
  • 使用帝国做软件下载网站源码顺义区做网站的公司
  • 网站用什么颜色成都网站建设公司服务
  • 重庆手机网站方案设计凡科建站网站怎么保存发给别人
  • 北京住房建设官方网站xampp wordpress服务器
  • 卖衣服的网站建设素材网站免费短视频
  • 萍乡网站建设哪家公司好搜索引擎推广预算
  • 如何做网站不容易被攻击网站定位策划书
  • 自己做网站去哪买服务器多说wordpress
  • 网站排名突然没有了网站开发背景图
  • 比较容易做流量的网站设计模板素材网站
  • 电商网站建设 网站定制开发兰州展柜公司网站建设
  • 临沂城乡建设管理局网站腾讯体育
  • 一个空间怎么放两个网站ps个人网站首页怎么制作
  • 云南通耀建设工程有限公司网站国际购物网站平台有哪些
  • 网站建设外包服务上海网站建设公司怎么分辨好坏
  • 建筑类企业网站模板下载微信搜索推广
  • 上海网站备案在哪里wordpress短链接关键字
  • 金诚财富网站是谁做的建站技术博客
  • 黔东南网站设计公司儿童衣服刘涛做代言那个是什么网站
  • 网站首页样式百度推广是什么工作
  • 广告手机网站制作阿里云域名 设置网站
  • 杭州市拱墅区网站建设ui培训有用么
  • 广东手机网站建设多少钱邯郸市做网站的公司
  • seo网站优化推广怎么做龙岗中心医院
  • 建网站程序智能网站建设平台
  • 建筑公司分几级资质seo入门培训