当前位置:  技术问答>linux和unix

sleep 的替代函数如何实现

    来源: 互联网  发布时间:2015-08-19

    本文导语:  由于在soliar下signal(SIGALRM,func) alarm(10)与sleep(10)有冲突,, 如何写个sleep的替代函数?? | 如果使用select的话,alarm也可以不使用的 而且一般来说使用sleep的话,进程应该处于挂起状态,不会使用CPU...

由于在soliar下signal(SIGALRM,func) alarm(10)与sleep(10)有冲突,,
如何写个sleep的替代函数??

|
如果使用select的话,alarm也可以不使用的
而且一般来说使用sleep的话,进程应该处于挂起状态,不会使用CPU过于忙碌.除非sleep经常出错,而你使用了一个循环不停地调用sleep
是不是Pro*C不能做SQL COMMIT? 打出错误原因来看看

|
signal(SIGALRM,func) alarm(10)与sleep(10)有冲突?
干吗不将alarm(10)换为setitimer试试?

|
用事件,waitforsingleobject,从1开始计数,到了指定时间再setevent

|
参见《UNIX环境高级编程》信号部分
以下是它里面的POSIX.1 sleep的可靠实现

#include
#include
#include "ourhdr.h"

static void
sig_alrm(void)
{
return; /* nothing to do, just returning wakes up sigsuspend() */
}

unsigned int
sleep(unsigned int nsecs)
{
struct sigaction newact, oldact;
sigset_t newmask, oldmask, suspmask;
unsigned int unslept;

newact.sa_handler = sig_alrm;
sigemptyset(&newact.sa_mask);
newact.sa_flags = 0;
sigaction(SIGALRM, &newact, &oldact);
/* set our handler, save previous information */

sigemptyset(&newmask);
sigaddset(&newmask, SIGALRM);
/* block SIGALRM and save current signal mask */
sigprocmask(SIG_BLOCK, &newmask, &oldmask);

alarm(nsecs);

suspmask = oldmask;
sigdelset(&suspmask, SIGALRM); /* make sure SIGALRM isn't blocked */

sigsuspend(&suspmask); /* wait for any signal to be caught */

/* some signal has been caught, SIGALRM is now blocked */

unslept = alarm(0);
sigaction(SIGALRM, &oldact, NULL); /* reset previous action */

/* reset signal mask, which unblocks SIGALRM */
sigprocmask(SIG_SETMASK, &oldmask, NULL);

return(unslept);
}

|
sleep可能是用SIGALRM实现的,所以不能混用。
proc不能commit是什么意思???

    
 
 

您可能感兴趣的文章:

  • linux的sleep函数有什么用
  • JAVA里有没有类似SLEEP的函数?
  • 请问一下sleep_on_timeout函数的返回直问题(在线等)
  • sleep() 函数的原理是什么
  • 怎么知道哪些函数需要连接什么库,如memset,sleep等等
  • Linux 中的 sleep() 函数如何精确到 1 毫秒?
  • Linux下是否有类似Sleep的使程序挂起的函数。
  • 请教Linux下的sleep()函数。。。
  • unix环境高级编程 第十章十九节sleep函数实现为什么要先阻塞SIGALRM?
  • select/sleep函数难道不能够被一个进程中的多个线程调用?
  • 在线程里面使用sleep函数是否会引起整个的进程都睡眠
  • 在线程中sleep函数休眠的问题
  • Linux 0.12内核中关于__sleep_on()函数的一点疑问,谢谢各位大哥帮忙解答啦。
  • nanosleep小延时不能实现,这个函数和select、sleep用什么区别
  • 求 思路 信号量控制函数中的线程sleep 100微秒。(linux)
  • 请教下linux中关于sleep()函数的问题
  • 急求~~~~sleep()函数的疑惑
  • linux下调用sleep或者usleep函数的CPU线程调度情况?
  • PHP中使用sleep函数实现定时任务实例分享
  • 信号处理中sleep函数失效的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java里有没有象vc里的sleep(1000)一样的功能的东西 当然不是实现Runnable不是继承线程类
  • Linux Ubuntu 如何实现sleep()小于1秒
  • 用alarm和pause来实现sleep:分不够可在加
  • 高手们,不救我我就不行了。。怎样用rdtsc实现一个us级别的sleep啊???
  • 如何不用sleep实现线程同步?
  • java命名空间java.util.concurrent枚举timeunit的类成员方法: sleep定义及介绍
  • 请问大侠们,线程中sleep到底行不行?? 希望是线程sleep的终结帖!!
  • java命名空间java.lang类thread的类成员方法: sleep定义及介绍
  • sleep在哪个头文件啊
  • sleep是进程域还是线程域的?
  • crond和sleep比较?
  • Linux sleep() 进程与线程
  • man sleep的问题
  • 有什么系统调用的sleep是以毫秒作为精度的?
  • linux下的SLEEP N(SECONDS)是什么用的?
  • 送分! UNIX C编程。 如何休眠5秒钟? 类似WINDOWS下的Sleep(5000).
  • windows下死循环需要加sleep,否则CPU爆满, linux下呢?
  • 为什么要将一个进种sleep掉
  • sleep
  • 求教sleep(1000),着急!着急!着急!
  • 请教sleep和pthread_delay_np:阻塞线程/阻塞进程?
  • java 线程,对当前线程(非主线程)调用sleep,为什么主线程(窗口)也没反应了
  • UNIX下用 sleep 时,进程不回响应,kill 都不行,都没有别的办法?
  • LINUX下访问oracle时sleeping的线程过多,达到300多个,造成系统拥堵!
  • linux一个sleep的奇怪问题,高手来给解答下了
  • 关于sleep问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3