c++ - alarm() 和 sleep() 到底是做什么的?
问题描述
如果我的时间片是 3 秒,我猜警报会每三秒停止一次进程的执行。睡觉有什么作用?它是否让进程休眠 3 秒?这对我来说没有意义 - 如果有很多流程怎么办?不是要睡久一点吗?
我正在使用循环刺激来做到这一点:
while (head!=NULL)
{
alarm(TIMESLICE);
sleep(TIMESLICE);
}
cout<<"no processes left"<<endl;
该代码有效,但我只是想了解究竟发生了什么,因为我是这个概念的新手。
解决方案
我猜警报会每三秒停止一次进程的执行。
有点。它安排在三秒钟内将信号发送到进程。然后,该过程可以正常继续,甚至可以根据需要忽略该信号。
睡觉有什么作用?它是否让进程休眠 3 秒?
正确的。
这对我来说没有意义 - 如果有很多流程怎么办?不是要睡久一点吗?
不,即使是从不休眠的进程也不能保证一直获得 CPU。未休眠的进程可能会或可能不会被安排在任何特定时间在核心上运行。一旦它不再休眠,它就可以运行了,调度器将决定何时以及多长时间让它使用什么内核。
推荐阅读
- javascript - 如何使用 javascript 操作 json 对象并添加密钥?
- c++ - 允许通过迭代和从子集中随机选择进行更改的数据结构 (C++)
- spring - 使用 Spring 和 Reactor 的 API 组合 (BFF)
- javascript - 动态创建对象数组
- neo4j - 如何在 neo4j 中手动安装 apoc?
- java - Jacoco 和 Intellij 的不同代码覆盖率
- c# - AWS Lambda 中的 AggregateException 错误
- swift - 将 [Int:String] 字典存储到 user.defaults 会因 SIGABRT 错误而崩溃
- android - 如何获取 ACTION_GET_CONTENT 提供的文件的最后修改日期
- java - 带有数组列表的“if”和“else”