- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 sched_setscheduler()
来设置给定进程的调度策略。根据其 man page ,可用标志为 SCHED_FIFO,SCHED_RR,SCHED_OTHER,SCHED_BATCH,SCHED_IDLE
。
除了 SCHED_BATCH
和 SCHED_IDLE
,我能够使用所有标志并成功编译我的程序。然而,使用,比方说,SCHED_BATCH
,我得到
error: ‘SCHED_BATCH’ undeclared (first use in this function)
sched_setscheduler(getpid(),SCHED_BATCH,¶m);
说明我的问题的示例代码是:
#include<stdio.h>
#include<unistd.h>
#include<sched.h>
#include<time.h>
#include<stdlib.h>
#include<sys/types.h>
int main()
{
struct sched_param p;
p.sched_priority=0;
sched_setscheduler(getpid(),SCHED_BATCH,&p);
return 0;
}
如手册页中所述,我创建了一个 typr sched_param
对象,设置其适当的 sched_priority
值,并将其传递给函数。
我的 linux 内核版本是 4.4.40,我使用的是 Ubuntu 14.04.5 LTS。我的 gcc 版本是 6.2.0。
我该如何解决?
最佳答案
SCHED_BATCH
和 SCHED_IDLE
是特定于 Linux 的,不是 POSIX 标准的一部分。
除非您定义 _GNU_SOURCE
,否则 Glibc 不会公开它们。所以,做:
#define _GNU_SOURCE
在包含标题之前。
关于c - 使用调度策略标志 SCHED_BATCH 或 SCHED_IDLE 会产生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41834234/
我正在从事 Ubuntu 项目。还没有发现 sched_batch 和 sched_other 之间的明显区别。谁能告诉我区别? 最佳答案 假定使用 sched_batch 调度的线程是非交互式的,但
我正在尝试使用 sched_setscheduler() 来设置给定进程的调度策略。根据其 man page ,可用标志为 SCHED_FIFO,SCHED_RR,SCHED_OTHER,SCHED_
我正在尝试创建不太可能被安排的线程(这是针对测试用例,而不是生产代码),所以我想创建一个带有 SCHED_IDLE 的线程调度策略。 不幸的是,这失败了 EINVAL (即使以 root 身份运行)在
我是一名优秀的程序员,十分优秀!