问题标签 [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 投票
3 回答
752 浏览

c - 如何用ncurses同时打印两件东西

我正在制作类似于太空入侵者的 ncurses 游戏。

到目前为止,我已经获得了移动和击落,但我遇到了一个问题。

当玩家发射激光时,我正在使用睡眠调用来延迟激光在屏幕上的移动,这样它就不会只从屏幕的一端显示到另一端。

使用 usleep 来延迟激光的问题意味着玩家在激光穿过屏幕时无法移动,直到循环退出。

我的问题是,是否有另一种方法可以打印在屏幕上移动的激光,同时通过用户输入移动播放器/光标?

当用户按下“f”键时,以下代码会在屏幕上移动线(激光)。然而,在激光离开屏幕之前,用户不能再次移动:

0 投票
1 回答
864 浏览

php - curl_multi 执行几次后暂停

我的问题是我想从 API 网页访问 json 数据,并且每秒只允许 10 次调用。在向处理程序添加 10 次调用后,我执行它们,然后对每个结果进行解码,处理的数据和 curl 会话将从处理程序中删除。

平均而言,一次调用大约需要 600 毫秒(11600 次调用的结果)。我打了 10 后如何停止给新人打电话?我尝试使用 usleep (并且它有效),但它减慢了所有沉重的东西。有时大约 20 秒〜这是延迟 curl 调用的唯一方法还是如何更改此代码以提高效率?

编辑更新代码以解决错误并改进它。查看编辑以查看发生了什么变化。

0 投票
1 回答
175 浏览

c++ - Usleep 在 C++ 中开始得太早

在 C++ 中,我usleep在“主”路径中使用并在out之前调用该函数。

out只是在屏幕上打印一些东西。不幸的是,它仅在 4 秒后才出现在屏幕上,尽管该命令在 sleep 命令之前。这个怎么可能?

0 投票
1 回答
346 浏览

c++ - 睡眠和睡眠开始错误

在 C++ 中,我usleep在“主”路径中使用并在out之前调用该函数。

out只是在屏幕上打印一些东西。不幸的是,打印仅在 4 秒后出现在屏幕上,尽管out()函数调用在usleep命令之前。我用 raspbian 研究覆盆子。怎么可能不是先功能out();被调用然后usleep开始,但反过来呢?

0 投票
2 回答
211 浏览

c++ - 由于在 C++ 中使用异步 IO 而延迟我的程序而不休眠的替代方法?

除了睡觉之外,我有一个关于延迟 C++ 程序的替代方法的问题。

我的程序有一部分接收 UDP 数据包并将其发送到控制器。这部分程序必须异步运行。为了减少此提供程序的开销,我决定使用异步 IO 来接收 UDP 数据包,而不是让单独的线程监视套接字。

我按照这个sigaction 的例子来完成这个。我注意到,如果我在这个 sigaction 处于活动状态时尝试使用 usleep,它会在我收到数据包时打破我的睡眠。这是有道理的,因为我假设 sigaction 是由 CPU 上的某种中断触发的,这可能会阻止 CPU 休眠。如果有人对为什么会发生这种情况有很好的解释,我会很想知道。我的问题是有时我必须连续发送几个数据包并且需要确保延迟它们,否则它们会被我的控制器错过。

我通常会使用睡眠来延迟数据包的发送,但现在我不能,因为它被我的 sigaction 破坏了。我曾考虑过使用繁忙的等待,但它可能太不一致了。我也有可能使用一个使用计时器定期清空的数据包队列,但似乎可能有一个更简单的解决方案。

除了睡眠之外,还有其他方法可以延迟数据包的发送吗?有没有办法设置我的异步 IO 使其不会中断睡眠?我会以错误的方式解决这个问题吗?

0 投票
2 回答
252 浏览

perl - 快速循环的简单 PERL 脚本

我正在尝试让 perl 脚本快速循环(在 Solaris 中)。

我有这样的事情:

我希望 perl 脚本每 10 微秒执行一次 shell 脚本。该脚本不会失败,但无论我在脚本中更改多少 usleep 的精度,该脚本仍然每秒仅执行大约 10 次。我需要它比这更快地循环。

我在这里错过了一些基本的东西吗?我以前从未使用过 perl,但我无法在 Solaris 中获得我想要的睡眠速度,所以我选择了 perl。

TIA

哈士奇。

编辑:

多亏了用户的评论,修改了脚本的想法——我现在正试图在 perl 中完成这一切,但惨遭失败!基本上我正在尝试运行 PS 命令来捕获进程 - 如果该进程存在,我想捕获该行并输出到文本文件。

这将返回以下错误:

0 投票
1 回答
1077 浏览

c - 如何在 for 循环中为 pthread 函数 usleep() 使用随机种子生成器?

我应该得到一个数字来传递给 thread_mutex 初始化函数,以用作 usleep() 的 rondom 种子生成器。我不知道为随机数创建种子意味着什么。我在使用 srand() 时遇到的问题是将代码:srand(timeDelay)放在 for 循环中会使 rand() 始终相同。直接指示说:

代码

初始化赛车手生成“随机种子”的代码

运行函数代码

0 投票
1 回答
227 浏览

perl - 不能在 Perl 语言中执行“usleep”

我正在学习 Perl,但我遇到了一个问题。我设计了一个简单的程序,但是当我运行它时会出现这个错误:

怎么解决?谢谢。

0 投票
1 回答
471 浏览

grand-central-dispatch - 在 OSX 10.10 上延迟代码执行

我遇到了一个非常奇怪的问题,它影响了仅在 OSX 10.10 系统上运行的代码。我已经在运行我的代码的超过 25 个 OSX 10.10 系统上看到了这种异常情况,而完全相同的代码在升级 (10.7) 之前没有表现出这种行为。此外,这个问题不是 100% 可重现的,因为它随机发生 ~0-5% 的时间。在测试代​​码时,机器上没有发生任何其他关键或 CPU 耗尽的情况。即使发生了其他事情,我所经历的延误实在是太可笑了,这一事实让这个结论看起来很可疑。无论如何,事不宜迟,看看下面的 NSLog 打印:

时间以纳秒为单位。根据 NSLog 时间戳,我们实际上最终等待了 20.68 秒,而不是期望的 0.679 秒。现在,让我们看一下代码:

如果您想知道 mach_wait 是什么,它是一个高分辨率计时器可用的默认值。只包括

但这并不重要,因为如果我将mach_wait_until替换为:

  • sleep()
  • usleep()
  • [NSThread sleepForTimeInterval:]
  • GCD's dispatch_after(,^{});
  • mach_wait_until()

不管我尝试使用哪种延迟方法,我NSLog都会将我的“延迟”值打印到控制台作为健全性检查,以确保它是正确的毫秒数,然后触发上述方法之一。约 95% 的时间它的行为符合规范。但偶尔会随机出现 10-20 秒的延迟。是什么赋予了?这是一些优胜美地内核问题吗?同样,我从来没有经历过在 10.7 上运行相同代码的情况。而且我已经测试了上述所有延迟代码执行的方法。


更新:

根据评论建议,我继续前进sudo dtruss -f -e sudo -u USER MyApp 2> ~/myapps.log。像往常一样,大多数 mach_wait 和 sleep 都按照他们应该的方式行事。所以为了让事情更容易识别,我添加了一个检查,如果实际睡眠持续时间 > 3x 它应该是什么,它会打印出 DELAY ISSUE。运行我的程序并搜索延迟问题。下面列出了在 mach_wait 语句之前和之后的日志打印之间发生的最频繁的系统调用(dtruss 输出):

  • 99613/0xcf33b9: 30250 __semwait_signal(0xD07, 0x0, 0x1) = -1 Err#60
  • 99613/0xcf33b9: 16 workq_kernreturn(0x20, 0x0, 0x1) = 0 0

上述两个电话中大约有 250 多个。可能比 __semwait 多一些 workq。semwait 通常需要大约 30000 个“单位”的时间才能完成,不管是什么。不知道如何 dtruss 时代。这些构成了呼叫的大部分。

  • 752/0xcf3320: 2787191 kevent64(0x3, 0x0, 0x0) = 1 0
  • 752/0xcf335d:189948 选择(0x40、0x7FC080E18220、0x7FC080E13B40、0x0、0x0)= 1 0
  • 752/0xcf335d:1648403 选择(0x40、0x7FC080E18220、0x7FC080E13B40、0x0、0x0)= 1 0

这三个系统调用花费了最长的 # 个时间单位。在我们约 20 秒的等待间隙中,它们每个都出现在输出中一次。

不知道如何处理上面的=X

0 投票
1 回答
245 浏览

c++ - 我是否正确使用了 usleep 还是这是一个错误?

所以,理论上,它应该打印 1,等待 2 秒,然后打印 2。相反,在我启动程序的第二秒,它等待 2 秒,然后打印 1 和 2。这是一个错误还是我只是愚蠢?(是的,我是 C++ 的菜鸟)