问题标签 [usleep]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
380 浏览

c++ - 因 clock_gettime() 问题而入睡

我正在做一个微基准测试。我的代码看起来像这样

但是,我放入 usleep() 的睡眠时间实际上会影响我得到的观察到的 time_diff。如果我使用上面的骨架测量此代码的执行,则我得到的时间分别从 ~1.8us 到 ~7us 不等,睡眠时间分别为 100us 和 1000us。当睡眠时间在仪器模块之外时,为什么测量的时间会随着睡眠时间的变化而变化?

时间结果是多次运行的平均值。我正在使用 Ubuntu 14.04 运行此代码。对于加密,我使用来自 openssl 的 aesgcm。

我知道这不是进行微基准测试的最佳方法,但这不是问题所在。

0 投票
2 回答
20045 浏览

c - 为什么使用usleep而不是sleep

我正在阅读应用程序代码,有些东西引起了我的注意。代码是:usleep(6*1000*1000)。我知道他们使用这种格式来解决可读性问题。

我认为两者都sleep使用usleepnanosleep功能,所以我的问题是:为什么不使用做完全相同的事情的 sleep(6) (即:睡眠 6 秒)?当我们使用 时,我们是否获得了性能usleep?更usleep“通用”?

0 投票
1 回答
614 浏览

php - 在 PHP 中 sleep 和 usleep 的行为是否不同?

我有一个套接字服务器侦听传入数据的连接并在输入暂停期间写入传出数据。由于这是在一个循环中,我正在sleep调用以允许其他进程有一些 CPU 时间,而我的进程并不期望立即输入。

我知道sleep这样做,但是否usleep也将执行返回给操作系统?我很怀疑,因为我知道,传统上,sleep系统调用只接受秒,而且我十年前读过的一本关于 C 编程的非常古老的书说,要“睡眠”更短的时间间隔涉及黑客,比如制作一个无限循环来基本上模拟sleep调用但不将 CPU 时间让给其他进程。(这本书可能是错的,或者可能不再准确,我只是告诉你它所说的。)

我正在使用 Linux,PHP 版本 5.6 和 7.1

谢谢你

0 投票
0 回答
140 浏览

python - Python 睡眠直到没有繁忙循环的时间

假设我想用 Python 做一个事件提醒。它会在启动时读取一个包含事件列表(会议、生日等)的文件,找出哪个是最快的,然后执行类似time.sleep(1e7). 实际上,这是行不通的:尝试睡眠一千万秒会产生OverflowError. 好的,没问题:我们会time.sleep(2**22)循环调用。它有点不那么优雅,但是每 7 周无缘无故地唤醒我们的进程的开销应该基本上不会影响系统性能或电池寿命,或者当他们警告我们不要sleep循环调用时,每个人都喜欢的所有这些好东西。

但!这不行!它似乎有效,除非您测试休眠计算机时会发生什么。如果你打电话time.sleep(60)马上休眠,然后马上重新开机,你会发现电脑关机的时间“不算”;即使整个休眠/唤醒时间不到一分钟,程序也会迟到。那么,该怎么办呢?在这种情况下,一个常见的建议似乎是一个繁忙的循环:打电话sleep,然后当你醒来时,检查时间,看看你还能承受多少睡眠。

这种方法的问题在于它会迫使你小睡很短,否则就会非常不可靠。如果下一个事件是几个月之后(也许你只是使用事件提醒来跟踪生日),这并不意味着我们可以睡几个星期,因为我们不知道电脑有多少时间将开启。可能在我们调用睡眠后几分钟,计算机就会进入休眠状态,并一直保持关闭状态,直到我们应该提醒的事件发生前一天。因此,我们可能会错过几周的活动,以及之后不久的任何其他活动。

那么,什么是安全时间?一秒钟肯定是安全的;事实上,一秒钟可能是矫枉过正。每十秒钟检查一次可能是安全的;如果有人让他们的电脑进入睡眠状态,并且在他们的提醒到期前不到十秒才打开它,我认为如果它迟到了几秒钟,他们就不会抱怨太多。一分钟更可疑;对于某些事情,迟到一分钟被提醒几乎没有什么不同,但对于其他事情却是这样。例如,如果您最喜欢的电视节目是下午 4 点,而您的提醒设置为 3:59,那么迟到一分钟是不好的;用户最好知道这可能会发生,并且应该将提醒设置为 3:58 以进行补偿。

但是每分钟检查一次时间的开销可能是不可忽略的。至少,它不鼓励操作系统分页 python 解释器并将内存分配给更值得的进程。或者,如果它确实将其分页,那么每分钟产生的额外磁盘流量可能会减慢用户尝试玩的游戏,从而导致原本完美的 60 fps 帧速率出现故障。

或者也许这一切都不会发生,我严重高估了偶尔打电话的影响sleep,但仍然感觉不对劲、笨拙、不优雅、效率低下,而且很恶心。操作系统知道我睡了多久;这项工作从头到尾都是微不足道的。我的程序不知道计算机何时休眠,它不应该关心。应该有某种方法让操作系统使用它的知识在正确的时间唤醒我。我对吗?真的有这样的方法吗?如果是这样,那是什么?

0 投票
1 回答
89 浏览

windows - windows上的perl卡在从另一个模块调用usleep

我在 windows 环境中使用以下 perl 代码:

当我像这样(从另一个模块)调用 xsleep 时,系统卡住了,我只能通过 ctrl+c 停止它,但是当我从当前模块调用它时,它工作正常。

谁能告诉我为什么会这样,我该如何解决?谢谢

0 投票
1 回答
582 浏览

macos - macos nanosleep() 睡眠(远)太久

从概念上讲,我运行以下 Swift 伪代码来调节 UDP 发送的数据比特率

就我而言,睡眠时间通常约为 0.001 秒。一般来说,实际花费nanosleep()要高出几个百分点。到目前为止一切都很好 - 但经过一段时间nanosleep()后返回更长的时间 - 很容易它是几秒钟甚至一分钟。我很确定我不会要求这么长的间隔。我试过没有结果

  • release使用配置构建应用程序
  • 在调试器之外运行应用程序

奇怪的是,如果从调试器运行时发生这种情况 - 当我暂停并恢复应用程序时,它会再次正常运行一段时间。

有什么线索吗?

0 投票
1 回答
1449 浏览

c++ - usleep vs std::this_thread::sleep_for,当在 linux 串口上写/读时

我创建了一个 c++ 应用程序,它需要通过串行端口连接到调制解调器才能发出 AT 命令。我遵循了以下答案:how to open, read, and write from serial port in C并且效果很好。在代码的某些点中提到工作线程应该休眠足够的时间,以便字符的发送和读取保持一致。

由于我对像usleep这样的linux系统调用不够熟悉,所以我想问一下这个调用对于与我的程序并行运行的其他linux进程是否安全,或者我应该使用c++默认线程挂起执行方法,如std ::this_thread::sleep_for?
如果我使用 usleep 有什么我应该注意的吗?

0 投票
1 回答
115 浏览

c - C语言中最简单最真实的时序

我正在制作一个微控制器编程器,现在,我一直在usleep()尝试引入适当的延迟。

似乎有时该程序有效,有时则无效。

我在编译代码时尝试了该-O2标志,但我开始怀疑这是否是一个错误。

usleep()另外,除了不涉及标准系统中不包含的任何库之外,我还可以使用更准确的计时功能吗?我不想使用系统在后台缓存的功能(并且搞砸了时间)。哎呀,如果这意味着调用系统中的特定地址来等待时钟滴答,那么我宁愿这样做。

有什么建议么?

0 投票
0 回答
85 浏览

php - 循环运行 X 秒,在 while() 中设置睡眠

我有一个变量 ($i) 从 0 到 9 开始。它在循环中不断增加 ($i++) 直到达到 9,当它达到 9 时将 $i 设置为 0。我想运行这个循环 2 秒只有然后得到它在 2 秒后停止的最终数字。所以我写了以下代码:

但是这是不准确的,每次运行 2 秒,数字都不同。如何使用 usleep(2000000); 我读到的在 while() 或 for() 循环中更准确,并打破循环并准确打印 $counter 编号。

0 投票
2 回答
918 浏览

ios - 在 Swift 的后台线程中执行时,usleep 的精度不好

我一直在使用“usleep”在几毫秒内停止线程,并且我检查过它停止的时间比预期的要长。

我确定我做错了什么,我不是 Swift 专家,但我不明白它,因为它很容易检查。例如:

结果:

如果我在主线程中执行相同的操作:

我认为我生成线程的方式对于停止它是错误的。我怎样才能生成一个与 usleep 配合得很好的线程?

谢谢