Little BigUs 2022-09-15 20:27 采纳率: 92.7%
浏览 11
已结题

linux线程调度 和 优先级的问题

我创建了两个线程,一个线程不断输出A,另一个线程不断输出B,两个线程同时运行时AB间断打印,现在我想要通过修改 线程调度策略 以及线程的优先级来达到 两个线程都被创建后只有一个线程占据 CPU资源,我的代码如下:
设置线程的调度策略为FIFO并且设置不同的优先级,但是并不能达到效果。


#include<stdio.h>
#include<pthread.h>
#include<sched.h>
#include<unistd.h>

void* thread(void *arg) {
    char ch = *(char *)arg;
    
    while(1) {
        printf("%c",ch);
        fflush(stdout);
        //sleep(1);
    }
}

int main(int argc, char *argv[]) {
    pthread_t t1, t2;
    char ch1 = 'A', ch2 = 'B';
    pthread_attr_t attr;
    struct sched_param sch;

    pthread_attr_init(&attr);
    pthread_attr_getschedparam(&attr, &sch);
    
    sch.sched_priority = 10;
    pthread_attr_setschedpolicy(&attr, SCHED_FIFO);
    pthread_attr_setschedparam(&attr, &sch);
    pthread_create(&t1, &attr, thread, (void*)&ch1);
    
    sch.sched_priority = 10;
    pthread_attr_setschedparam(&attr, &sch);
    pthread_create(&t2, &attr, thread, (void*)&ch2);

    pthread_join(t1, NULL);
    pthread_join(t2, NULL);

    return 0;
}

  • 写回答

1条回答 默认 最新

  • 软泡芙 C#领域优质创作者 2022-09-16 08:55
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月2日
  • 已采纳回答 9月24日
  • 创建了问题 9月15日

悬赏问题

  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题