相关疑难解决方法(0)

sleep()背后的算法是什么?

现在有一些我一直想知道的事情:sleep()是如何实现的?

如果只是使用操作系统中的API,那么API是如何制作的?

这一切都归结为在CPU上使用特殊的机器代码吗?那个CPU是否需要一个特殊的协处理器或其他小玩意,没有它你就不能睡觉()?

睡眠()的最着名的化身在C语言中(更准确地说,在C编译器附带的库中,例如GNU的libc),尽管现在几乎每种语言都有它的等价物,但是在某些语言中实现了睡眠(认为Bash)不是我们在这个问题上看到的......

编辑:在阅读了一些答案之后,我看到该进程被置于等待队列中.从那里,我可以猜出两种选择

  1. 设置一个计时器,以便内核在适当的时间唤醒进程,或者
  2. 每当内核被允许一个时间片时,它会轮询时钟以检查是否是时候唤醒一个进程.

答案只提到备选1.因此,我问:这个计时器如何表现?如果这是一个让内核唤醒进程的简单中断,那么内核如何要求定时器"在140毫秒内唤醒我,以便我可以将进程置于运行状态"?

c algorithm sleep

41
推荐指数
7
解决办法
9648
查看次数

是否可以为特定的代码段禁用gcc/g ++优化?

我正在编译一些没有优化的代码但是在启用优化的情况下中断.我怀疑代码的某些关键部分被优化了,导致逻辑崩溃.

我想做的事情如下:

code...

#disable opt

more code...

#enable opt
Run Code Online (Sandbox Code Playgroud)

如果我可以设置该部分的优化级别(如O0,O1 ......)会更好

对于那些暗示它是代码的人:

要删除的代码部分是(通过反汇编目标文件来检查):

void wait(uint32_t time)
{
  while (time > 0) {
    time--;
  }
}
Run Code Online (Sandbox Code Playgroud)

我严重怀疑该代码有问题

c optimization gcc

2
推荐指数
1
解决办法
611
查看次数

标签 统计

c ×2

algorithm ×1

gcc ×1

optimization ×1

sleep ×1