sched_setscheduler是针对所有线程还是主线程?

2024-03-21

我有以下来源,喜欢将 SCHED_RR 优先级设置为 90 :

int main(int argc, char** argv)
{
    const char *sched_policy[] = {
    "SCHED_OTHER",
    "SCHED_FIFO",
    "SCHED_RR",
    "SCHED_BATCH"
    };
    struct sched_param sp = {
        .sched_priority = 90
    };
    pid_t pid = getpid();
    printf("pid=(%d)\n",pid);
    sched_setscheduler(pid, SCHED_RR, &sp);
    printf("Scheduler Policy is %s.\n", sched_policy[sched_getscheduler(pid)]);

    pthread_t tid ;
    pthread_create(&tid , NULL, Thread1 , (void*)(long)3);
    pthread_create(&tid , NULL, Thread2 , (void*)(long)3);
    pthread_create(&tid , NULL, Thread3 , (void*)(long)3);
    while(1)
        sleep(100);
}

当 shell "top" 时,我可以看到该进程的 PR 为 -91 ,看起来它可以工作, 据我所知,在Linux中,thread1和thread2和thread3是不同的任务 从主线程来看,它们只是共享相同的虚拟内存,我想知道 在这个测试中,我是否需要添加

pthread_setschedparam(pthread_self(), SCHED_RR, &sp);

对于所有线程1、线程2和线程3,以便可以调度所有这3个线程 与 SCHED_RR ?!或者我不需要这样做?我怎样才能观察到 thread1、thread2 和 thread3 线程是 SCHED_RR 或 SCHED_OTHER ?!

Edit :

sudo chrt -v -r 90 ./xxx.exe 

等着瞧 :

pid 7187's new scheduling policy: SCHED_RR
pid 7187's new scheduling priority: 90

我如何确定这仅适用于主线程?!或 pid 7187 中的所有线程 是 SCHED_RR 政策吗?!再说了,如何观察呢?!


在创建任何新线程之前,您应该检查(并设置,如果需要)调度程序继承属性。

int pthread_attr_getinheritsched(const pthread_attr_t *attr, int *inheritsched);

int pthread_attr_setinheritsched(pthread_attr_t *attr, int inheritsched);

The pthread_attr_getinheritsched()将存储在指向的变量中inheritsched两个可能值之一:

  • PTHREAD_INHERIT_SCHED - Threads that are created using attr
    inherit scheduling attributes from the creating thread; the scheduling attributes in attr are ignored.

  • PTHREAD_EXPLICIT_SCHED - Threads that are created using attr take their scheduling attributes from the values specified by the attributes object.

如果您希望每个新创建的线程都继承调用任务的调度程序属性,则应该设置 PTHREAD_INHERIT_SCHED (如果尚未设置)。

另请注意:

新的继承调度程序属性的默认设置 初始化的线程属性对象是PTHREAD_INHERIT_SCHED

参考

$ man pthread_setschedparam
$ man pthread_attr_setinheritsched
  • (块引用的材料是从 Linux 手册页项目 3.74 版本的部分内容复制的。)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sched_setscheduler是针对所有线程还是主线程? 的相关文章

  • 我如何理解这个 C 类型声明?

    double bar int double double double double 在查看讲座幻灯片时 我发现了留给学生的练习 用简单的英语来说 什么是类型bar在这个 C 声明中 Please帮助我解决这个问题 我什至不知道从哪里开始
  • 使用 Enumerable.OfType() 或 LINQ 查找特定类型的所有子控件

    Existed MyControl1 Controls OfType
  • SONAR - 使用 Cobertura 测量代码覆盖率

    我正在使用声纳来测量代码质量 我不知道的一件事是使用 Cobertura 测量代码覆盖率的步骤 我按照以下步骤操作http cobertura sourceforge net anttaskreference html http cober
  • EF Core 通过完全替换断开集合导航属性的更新

    使用 EF Core 5 0 我有一个 SPA 页面 可以加载Group实体及其集合Employee来自 API 的实体 var groupToUpdate await context Groups Include g gt g Emplo
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • 时间:2019-03-17 标签:c#ThreadSafeDeepCopy

    我一直在阅读很多其他问题以及大量谷歌搜索 但我一直无法找到明确的解决方案 根据我读过的一些最佳实践 类的静态方法应该创建线程安全的 并且实例成员应该将线程安全留给消费者 我想为该类实现深度复制方法 该类本身还有其他引用类型成员 有没有什么方
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • 单例模式和 std::unique_ptr

    std unique ptr唯一地控制它指向的对象 因此不使用引用计数 单例确保利用引用计数只能创建一个对象 那么会std unique ptr与单例执行相同 单例确保只有一个实例属于一种类型 A unique ptr确保只有一个智能指针到
  • 如何从文本文件读取整数到数组

    这就是我想做的 我对此有些不满 但我希望你能容忍我 这对我来说是一个非常新的概念 1 在我的程序中 我希望创建一个包含 50 个整数的数组来保存来自文件的数据 我的程序必须获取用户的文档文件夹的路径 2 文件的名称为 grades txt
  • PHP 致命错误:未找到“MongoClient”类

    我有一个使用 Apache 的网站 代码如下 当我尝试访问它时 我在 error log 中收到错误 PHP Fatal Error Class MongoClient not found 以下是可能错误的设置 但我认为没有错误 php i
  • 如何通过 JsonConvert.DeserializeObject 在动态 JSON 中使用 null 条件运算符

    我正在使用 Newtonsoft 反序列化已知的 JSON 对象并从中检索一些值 如果存在 关键在于对象结构可能会不断变化 因此我使用动态来遍历结构并检索值 由于对象结构不断变化 我使用 null 条件运算符来遍历 JSON 代码看起来像这
  • 将标量添加到特征矩阵(向量)

    我刚刚开始使用 Eigen 库 无法理解如何向所有矩阵成员添加标量值 假设我有一个矩阵 Eigen Matrix3Xf mtx Eigen Matrix3Xf Ones 3 4 mtx mtx 1 main cxx 104 13 error
  • 是否有相当于 Clang/LLVM 的 .spec 文件,在哪里可以找到参考?

    The gcc驱动程序可以配置为使用特定的链接器 特定的选项和其他细节 例如覆盖系统头 specs files 当前 截至撰写本文时 GCC 版本 4 9 0 的手册此处描述了规范文件 https gcc gnu org onlinedoc
  • IEnumerable.Except 不起作用,那么我该怎么办?

    我有一个 linq to sql 数据库 非常简单 我们有 3 个表 项目和用户 有一个名为 User Projects 的连接表将它们连接在一起 我已经有了一个获得的工作方法IEnumberable
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正
  • 您是否将信息添加到每个 .hpp/.cpp 文件的顶部? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 创建新的 C 头文件 源文件时 您会在顶部添加哪些信息 例如 您是否添加日期 您的姓名 文件描述等 您是否使用结构化格式来存储此信息 e g F
  • 使我的 COM 程序集调用异步

    我刚刚 赢得 了在当前工作中维护用 C 编码的遗留库的特权 这个dll 公开使用 Uniface 构建的大型遗留系统的方法 除了调用 COM 对象之外别无选择 充当此遗留系统与另一个系统的 API 之间的链接 在某些情况下 使用 WinFo
  • ASP.NET Core MVC 视图组件搜索路径

    在此处的文档中 https learn microsoft com en us aspnet core mvc views view components view aspnetcore 2 2 https learn microsoft
  • 从 JavaScript 中的 OnClientClick 事件中阻止 C# 中的 asp:Button OnClick 事件?

    我有一个asp Button在我的网页上 它调用 JavaScript 函数和代码隐藏方法 后者进行调用以导航到另一个页面 在 JavaScript 函数中 我正在检查条件 如果不满足这个条件 我想中止导航 以便OnClick方法未被调用

随机推荐

  • 从 python 中的文本文件中读取特定列

    我有一个文本文件 其中包含一个由数字组成的表格 例如 5 10 6 6 20 1 7 30 4 8 40 3 9 23 1 4 13 6 例如 如果我想要仅包含在第二列中的数字 我如何将该列提取到列表中 f open file r line
  • MPI 中的相同发送和接收缓冲区

    在我的代码中 每个进程都作用于数组的特定部分 我希望每个进程将其处理的部分发送到其他进程 并从其他进程接收其他部分 为此我使用了MPI Allgatherv但我保持发送和接收缓冲区相同 MPI Allgatherv vel 0 localS
  • 如何将自定义的 Firefox 配置文件与 PHPUnit 的 Webdriver 框架结合使用?

    我知道使用 selenium RC 我曾经传递一个命令行操作符 firefoxProfileTemplate 这样就可以了 现在使用 Selenium2 Webdriver 这似乎不再起作用了 由于我正在使用 PHPUnit 进行其他测试
  • AWS Step Functions 是否登录 CloudWatch

    我想知道 AWS 步骤函数执行的输出是否记录在 CloudWatch 日志组中 我是not讨论由 step 函数调用的 lambda 函数的输出 我对状态机本身的输出感兴趣 我问这个问题是因为我们通常将所有日志集中在 loggly 中 以便
  • 是否可以将代码隐藏分成多个部分文件?

    我有一个带有 aspx cs 代码隐藏的 aspx Web 表单 隐藏的代码有近 2000 行长 而且已经到了轻松导航的唯一方法就是在各部分之间放置大量空格 缩小以便我可以看到代码的物理外观 并且然后放大我要编辑的地方 换句话说 这是一个很
  • 使用 Qt Designer 调整 Qt 拆分器布局大小行为

    我在 Qt 中通过拖放制作的视图中存在尺寸问题 让我从一张图片开始来帮助我解释 这是我的表单的主窗口 发生的情况是 我们有 4 个选项卡小部件 左侧选项卡小部件有一个到 2 个中间小部件的水平分割器 2 个中间小部件有一个垂直分离器 左侧和
  • 如何检测请求是否被中止?

    我正在提出请求 然后立即中止 var x get url function d e xhr alert d x abort 问题是它执行success函数并返回空数据 这里的例子 http jsfiddle net e5NBT 有没有 jQ
  • 将 ASM 转换为 C(不是逆向工程)

    我用谷歌搜索 发现数量惊人的轻率回复 基本上都是在嘲笑提出这样问题的提问者 Microchip 免费提供一些源代码 我不想将其发布在这里 以防万一 基本上 谷歌 AN937 单击第一个链接 其中有一个 源代码 链接及其压缩文件 它在 ASM
  • 使 Swift 并发中的任务串行运行

    我有一个基于文档的应用程序 它使用结构作为其主要数据 模型 由于模型是 的子类 的属性NSDocument需要从主线程访问它 到目前为止一切都很好 但对数据的某些操作可能需要相当长的时间 我想为用户提供一个进度条 这就是问题开始的地方 特别
  • 使用 Flask 蓝图,如果指定了子域,如何修复 url_for 的损坏?

    在烧瓶蓝图中 我有 frontend Blueprint frontend name 我的索引函数的路径是 frontend route def index code 这工作正常 但是 我试图向路由添加一个子域 如下所示 frontend
  • 合并两个列表C++

    我想合并两个列表 以便合并队列中仅存在一个公共元素条目 std list
  • 检测移动邮件客户端的标准方法?

    这个问题类似于 基于 http 请求在 Web 应用程序中检测移动浏览器的标准方法 https stackoverflow com questions 142273 standard way to detect mobile browser
  • HTTP_USER_AGENT Java/1.6.0_17 生产网站上的奇怪异常

    今天 我们的生产网站上收到了一些奇怪的异常情况 它们都有以下 HTTP USER AGENT 字符串 Java 1 6 0 17 我查了一下UserAgentString com http www useragentstring com i
  • jQuery 数据表过滤具有特定类的行

    我正在开发一个 jQuery Datatable 项目 我需要根据特定的行类过滤数据 我根据条件在创建行时向行添加类 我试图找出一种方法 让我的用户单击一个按钮 该按钮将应用一个仅显示包含特定类的行的过滤器 我尝试了几种不同的解决方案 但似
  • 如何在 Hadoop Hive 中获取给定时间戳的一周第一天的日期?

    除了编写自定义 UDF 来支持此问题之外 是否还有任何已知的方法可以实现此目的 我目前使用的是 Hive 0 13 从 Hive 1 2 开始 你还可以这样做 select next day date sub 2019 01 01 7 MO
  • Jupyter Notebook:对文件的访问被拒绝

    我正在尝试在 Ubuntu 21 10 上运行 Jupyter 笔记本 我已经安装了 python jupyter Notebook 以及所有各种先决条件 我添加了export PATH PATH local bin to my bashr
  • 测试:如何在两个连续的 Promise/run.laters 之间断言?如何跳过测试中的“run.later”等待?

    这是一个简单的组件 App FooBarComponent Ember Component extend tagName button status Ready revertStatusPeriodMs 2000 click functio
  • GnuPlot 中带零的对数 y

    我的目标是在对数刻度上显示 0 值 略低于 1 我设法绘制了自己的简单直方图 with boxes 具有对数 Y 刻度 我的 Y 值是非负整数 最大为 25000 我无法区分 0 和 1 值 因为 Y 刻度从 1 开始 这在数学上是正确的
  • 如何使 Windows DNS 和 WINS 设置保留在 Azure VM 中?

    我在 Azure VM 中设置了一个域控制器 并且其他几个服务器也设置为 VM 当我设置服务器虚拟机时 我将 DNS 和 WINS 配置为指向 DC 的 IP 地址并将它们加入域 但是 这些设置在关闭 虚拟机被释放 后将无法保留 当虚拟机重
  • sched_setscheduler是针对所有线程还是主线程?

    我有以下来源 喜欢将 SCHED RR 优先级设置为 90 int main int argc char argv const char sched policy SCHED OTHER SCHED FIFO SCHED RR SCHED