SylixOS中的线程【16】--- 线程亲和度

2023-11-03 05:48
文章标签 线程 16 sylixos 亲和度

本文主要是介绍SylixOS中的线程【16】--- 线程亲和度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概念

线程是调度的最小单位,对于多核处理器,可以同时运行多个线程。作为优先级抢占系统SylixOS优先运行优先级最高的n个线程,这样默认情况下同一线程在不同时间可能在不同的CPU上执行,SylixOS尽量保证个CPU执行时间基本相等(负载均衡)。

为了提高某些线程的实时性,可以绑定线程到某CPU上,则该线程只在绑定(亲和)的CPU上执行,即便本CPU忙碌而其他CPU闲置。

接口

/*********************************************************************************************************
** 函数名称: API_ThreadSetAffinity
** 功能描述: 将线程锁定到指定的 CPU 运行.
** 输 入  : ulId          线程
**           stSize        CPU 掩码集内存大小
**           pcpuset       CPU 掩码
** 输 出  : ERROR
** 注  意  : 当前只能将任务锁定到一个 CPU 上, 如果指定的 CPU 没有激活则其他所有核均可调度.
*********************************************************************************************************/
ULONG  API_ThreadSetAffinity (LW_OBJECT_HANDLE  ulId, size_t  stSize, const PLW_CLASS_CPUSET  pcpuset)
/*********************************************************************************************************
** 函数名称: API_ThreadGetAffinity
** 功能描述: 获取线程 CPU 亲和度情况
** 输 入  : ulId          线程
**           stSize        CPU 掩码集内存大小
**           pcpuset       CPU 掩码
** 输 出  : ERROR
** 注  意  : 如果获取的掩码全为 0 则所有 CPU 均可调度此任务.
*********************************************************************************************************/
ULONG  API_ThreadGetAffinity (LW_OBJECT_HANDLE  ulId, size_t  stSize, PLW_CLASS_CPUSET  pcpuset)

示例

/*********************************************************************************************************
** 函数名称: ls2xLcdTestStart
** 功能描述: LCD 测试
** 输 入  : NONE
** 输 出  : ERROR_CODE
** 全局变量:
** 调用模块:
*********************************************************************************************************/
INT  ls2xLcdTestStart (VOID)
{pthread_t   tid;INT         iError;LW_CLASS_CPUSET cpuset;LW_CPU_ZERO(&cpuset);LW_CPU_SET(1, &cpuset);                                         /*  锁定到指定 CPU              */iError  = pthread_create(&tid, NULL, pthread_test, NULL);API_ThreadSetAffinity(tid, sizeof(LW_CLASS_CPUSET), &cpuset);return  (iError == 0 ? ERROR_NONE : PX_ERROR);
}

这篇关于SylixOS中的线程【16】--- 线程亲和度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/336009

相关文章

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param

线程的四种操作

所属专栏:Java学习        1. 线程的开启 start和run的区别: run:描述了线程要执行的任务,也可以称为线程的入口 start:调用系统函数,真正的在系统内核中创建线程(创建PCB,加入到链表中),此处的start会根据不同的系统,分别调用不同的api,创建好之后的线程,再单独去执行run(所以说,start的本质是调用系统api,系统的api

java线程深度解析(六)——线程池技术

http://blog.csdn.net/Daybreak1209/article/details/51382604 一种最为简单的线程创建和回收的方法: [html]  view plain copy new Thread(new Runnable(){                @Override               public voi

java线程深度解析(五)——并发模型(生产者-消费者)

http://blog.csdn.net/Daybreak1209/article/details/51378055 三、生产者-消费者模式     在经典的多线程模式中,生产者-消费者为多线程间协作提供了良好的解决方案。基本原理是两类线程,即若干个生产者和若干个消费者,生产者负责提交用户请求任务(到内存缓冲区),消费者线程负责处理任务(从内存缓冲区中取任务进行处理),两类线程之

java线程深度解析(四)——并发模型(Master-Worker)

http://blog.csdn.net/daybreak1209/article/details/51372929 二、Master-worker ——分而治之      Master-worker常用的并行模式之一,核心思想是由两个进程协作工作,master负责接收和分配任务,worker负责处理任务,并把处理结果返回给Master进程,由Master进行汇总,返回给客

java线程深度解析(二)——线程互斥技术与线程间通信

http://blog.csdn.net/daybreak1209/article/details/51307679      在java多线程——线程同步问题中,对于多线程下程序启动时出现的线程安全问题的背景和初步解决方案已经有了详细的介绍。本文将再度深入解析对线程代码块和方法的同步控制和多线程间通信的实例。 一、再现多线程下安全问题 先看开启两条线程,分别按序打印字符串的

java线程深度解析(一)——java new 接口?匿名内部类给你答案

http://blog.csdn.net/daybreak1209/article/details/51305477 一、内部类 1、内部类初识 一般,一个类里主要包含类的方法和属性,但在Java中还提出在类中继续定义类(内部类)的概念。 内部类的定义:类的内部定义类 先来看一个实例 [html]  view plain copy pu

C#线程系列(1):BeginInvoke和EndInvoke方法

一、线程概述 在操作系统中一个进程至少要包含一个线程,然后,在某些时候需要在同一个进程中同时执行多项任务,或是为了提供程序的性能,将要执行的任务分解成多个子任务执行。这就需要在同一个进程中开启多个线程。我们使用 C# 编写一个应用程序(控制台或桌面程序都可以),然后运行这个程序,并打开 windows 任务管理器,这时我们就会看到这个应用程序中所含有的线程数,如下图所示。

16 子组件和父组件之间传值

划重点 子组件 / 父组件 定义组件中:props 的使用组件中:data 的使用(有 return 返回值) ; 区别:Vue中的data (没有返回值);组件方法中 emit 的使用:emit:英文原意是:触发、发射 的意思components :直接在Vue的方法中声明和绑定要使用的组件 小炒肉:温馨可口 <!DOCTYPE html><html lang="en"><head><

react笔记 8-16 JSX语法 定义数据 数据绑定

1、jsx语法 和vue一样  只能有一个根标签 一行代码写法 return <div>hello world</div> 多行代码返回必须加括号 return (<div><div>hello world</div><div>aaaaaaa</div></div>) 2、定义数据 数据绑定 constructor(){super()this.state={na