当前位置: 首页 > news >正文

怎么创建网站快捷方式网络服务器搭建配置与管理 下载

怎么创建网站快捷方式,网络服务器搭建配置与管理 下载,织梦做网站如何套取别人网站的模板,建网站商城平台目录 一、Linux线程调度策略二、SCHED_RR 为什么比 SCHED_OTHER 要实时呢三、如何使用线程调度相关API1、相关API介绍2、示例代码 一、Linux线程调度策略 在 Linux 中#xff0c;调度策略#xff08;scheduling policy#xff09;是操作系统用来决定进程或线程调度顺序的算法… 目录 一、Linux线程调度策略二、SCHED_RR 为什么比 SCHED_OTHER 要实时呢三、如何使用线程调度相关API1、相关API介绍2、示例代码 一、Linux线程调度策略 在 Linux 中调度策略scheduling policy是操作系统用来决定进程或线程调度顺序的算法。在 sched.h 头文件中定义了几种调度策略其中包括以下三种常见的调度策略 #define SCHED_OTHER 0 #define SCHED_FIFO 1 #define SCHED_RR 2SCHED_OTHER又称为 CFSCompletely Fair Scheduler是 Linux 默认的调度策略。它基于时间片time-slice的概念使用公平调度算法以尽量保证所有进程或线程公平地分享 CPU 时间。对于大多数普通应用程序来说默认的 SCHED_OTHER 调度策略已经足够。 SCHED_FIFO先进先出调度策略也称为实时real-time调度策略之一。按照任务到达顺序依次运行直到任务主动释放 CPU 或者被更高优先级的任务抢占。 SCHED_RR轮转调度策略也是一种实时调度策略。每个任务都按照一定时间片轮流使用 CPU当时间片用完后任务会被挂起并被放置到队列的末尾然后下一个任务开始执行。SCHED_RR 调度策略允许设置不同的任务优先级优先级高的任务会在优先级低的任务之前执行。 这些调度策略可以通过 sched_setscheduler 函数来设置进程或线程的调度策略。以下是一个示例展示了如何使用 sched_setscheduler 函数将进程的调度策略设置为 SCHED_FIFO #include stdio.h #include sched.h #include unistd.hint main() {struct sched_param param;// 设置进程的调度策略为 SCHED_FIFOif (sched_setscheduler(0, SCHED_FIFO, param) -1) {perror(sched_setscheduler);return 1;}// 获取当前进程的调度策略和优先级int policy sched_getscheduler(0);if (policy -1) {perror(sched_getscheduler);return 1;}int priority sched_get_priority_max(policy);if (priority -1) {perror(sched_get_priority_max);return 1;}printf(调度策略: %d优先级范围: 1 - %d\n, policy, priority);return 0; }在上述示例中通过调用 sched_setscheduler 函数将当前进程的调度策略设置为 SCHED_FIFO。然后通过调用 sched_getscheduler 和 sched_get_priority_max 函数获取当前进程的调度策略和允许的最高优先级。 二、SCHED_RR 为什么比 SCHED_OTHER 要实时呢 SCHED_RR 被称为轮转调度Round-Robin Scheduling策略它在 Linux 中被认为是一种实时调度策略。相比于默认调度策略 SCHED_OTHERSCHED_RR 具有实时性的原因有以下几点 时间片轮转SCHED_RR 使用时间片轮转的方式进行调度。每个任务被分配一个时间片在时间片内运行当时间片用完时操作系统会自动切换到下一个任务。这种轮转的调度方式使得每个任务都能按照一定时间间隔获得 CPU 的使用权提高了实时性。 优先级调度SCHED_RR 允许为不同任务设置不同的优先级。优先级高的任务在时间片内先于优先级低的任务执行。这样可以确保优先级高的实时任务能够及时得到 CPU 的调度并避免优先级低的任务长时间占用 CPU。 抢占能力SCHED_RR 具有抢占能力即优先级更高的任务可以抢占优先级低的任务即使后者还没有用完时间片。这样当出现具有更高优先级的实时任务时操作系统可以及时地将 CPU 资源分配给它从而提高实时性。 总体而言相比于默认的 SCHED_OTHER 调度策略SCHED_RR 具有更好的实时性能。它为实时应用程序提供了更精确的任务调度控制和保证使得这些任务能够满足对响应性和实时性要求更高的应用场景。 需要注意的是SCHED_RR 并不是 Linux 中唯一的实时调度策略还有其他实时调度策略如 SCHED_FIFO 可供选择具体的选择要根据应用需求和系统的实时性要求进行合理的决策。 三、如何使用线程调度相关API 1、相关API介绍 pthread_attr_init   其是一个 Linux 线程 API 函数用于初始化线程属性对象。在使用线程属性对象之前必须先调用该函数进行初始化。 #include pthread.h int pthread_attr_init(pthread_attr_t *attr);attr 参数是指向线程属性对象的指针该指针指向的内存空间将被用于存储线程属性信息。在调用 pthread_attr_init() 函数后attr 指向的线程属性对象将被初始化为默认状态 即使用默认属性值。如果需要更改线程的属性则可以使用其他线程属性相关的函数如 pthread_attr_setschedpolicy()、pthread_attr_setstacksize() 等来修改属性值。函数返回值为 0 表示初始化成功否则返回相应的错误代码。pthread_attr_setschedpolicy   是一个 Linux 线程 API 函数用于设置线程属性对象pthread_attr_t中的调度策略scheduling policy。调度策略是指在多个线程竞争 CPU 资源时操作系统按照一定的规则来分配 CPU 时间片的方式。 #include pthread.h int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);attr 参数是指向线程属性对象的指针而 policy 参数则为想要设置的调度策略 。常见的调度策略有以下几种SCHED_FIFOSCHED_RRSCHED_OTHER在调用 pthread_attr_setschedpolicy() 函数之后线程所使用的调度策略就被设置为 policy 指定的值。需要注意的是调度策略只能被设置一次一旦设置就不能更改。如果需要修改调度策略 则必须先销毁线程属性对象并重新创建一个新的属性对象。函数返回值为 0 表示设置成功否则返回相应的错误代码。pthread_attr_setstacksize   其是一个 POSIX 线程库的函数用于设置线程的堆栈大小。 int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize); 该函数接受两个参数 - attr 是一个指向线程属性对象的指针。使用 pthread_attr_init 初始化线程属性对象并在调用 pthread_create 创建线程时传递给它。- stacksize 是一个 size_t 类型的值表示期望的线程堆栈大小以字节为单位。该函数返回 0 表示成功非零值表示失败。请注意线程堆栈大小的最小值可能会受到系统和库的限制。在使用时应该小心选择堆栈大小以 确保适应线程所需的工作负载。pthread_attr_setaffinity_np   其是一个 POSIX 线程库函数在 Linux 平台上设置线程的 CPU 亲和性CPU affinity。CPU 亲和性指定了线程允许在哪些 CPU 核心上执行。 int pthread_attr_setaffinity_np(pthread_attr_t *attr, size_t cpusetsize, const cpu_set_t *cpuset);该函数接受三个参数 - attr 是一个指向线程属性对象pthread_attr_t的指针。使用 pthread_attr_init 进行初始化并在调用 pthread_create 时传递给它。- cpusetsize 是一个 size_t 类型的值表示 cpuset 参数的大小以字节为单位。一般可以使用 sizeof(cpu_set_t) 获取正确的大小。- cpuset 是一个 cpu_set_t 类型的指针表示线程允许执行的 CPU 核心集合。可以使用CPU_ZERO、CPU_SET、CPU_CLR 等宏进行设置。该函数返回 0 表示成功非零值表示失败。2、示例代码 提供一个使用 Linux API 实现线程调度策略、设置线程属性、绑定核心的 C 语言代码示例。下面是一个简单的示例代码 #include stdio.h #include stdlib.h #include pthread.h// 线程函数1 void* thread_func1(void* arg) {printf(线程1正在运行\n);// 线程1的具体任务逻辑return NULL; }// 线程函数2 void* thread_func2(void* arg) {printf(线程2正在运行\n);// 线程2的具体任务逻辑return NULL; }int main() {pthread_t thread1, thread2;pthread_attr_t attr1, attr2;// 初始化线程属性pthread_attr_init(attr1);pthread_attr_init(attr2);// 设置线程调度策略SCHED_FIFO为实时线程SCHED_OTHER为普通线程pthread_attr_setschedpolicy(attr1, SCHED_FIFO);pthread_attr_setschedpolicy(attr2, SCHED_OTHER);// 设置线程栈大小size_t stack_size 1024 * 1024; // 1MBpthread_attr_setstacksize(attr1, stack_size);pthread_attr_setstacksize(attr2, stack_size);// 设置线程名称pthread_attr_setname(attr1, Real-Time Thread);pthread_attr_setname(attr2, Normal Thread);// 创建线程1绑定到核心0cpu_set_t cpuset1;CPU_ZERO(cpuset1);CPU_SET(0, cpuset1);pthread_attr_setaffinity_np(attr1, sizeof(cpu_set_t), cpuset1);pthread_create(thread1, attr1, thread_func1, NULL);// 创建线程2绑定到核心1cpu_set_t cpuset2;CPU_ZERO(cpuset2);CPU_SET(1, cpuset2);pthread_attr_setaffinity_np(attr2, sizeof(cpu_set_t), cpuset2);pthread_create(thread2, attr2, thread_func2, NULL);// 等待线程1和线程2运行结束pthread_join(thread1, NULL);pthread_join(thread2, NULL);// 销毁线程属性pthread_attr_destroy(attr1);pthread_attr_destroy(attr2);return 0; }上述代码中thread_func1() 和 thread_func2() 是分别作为线程1和线程2的函数。通过 pthread_t 数据类型创建线程并使用 pthread_attr_t 数据类型来设置线程属性。 在主函数中我们初始化了线程属性 attr1 和 attr2并分别为它们设置了调度策略、栈大小、线程名称和绑定的核心。通过调用 pthread_create() 函数创建线程并将线程函数和属性传递给它。 最后通过调用 pthread_join() 函数来等待线程1和线程2运行结束并在程序的末尾销毁线程属性。
http://www.pierceye.com/news/460193/

相关文章:

  • 南通网站建设解决方案求助如何做网站推广
  • 揭阳企业做网站淮安做网站
  • 怎么给餐饮店做网站用织梦做企业网站
  • 技术支持 创思佳网站建设如何制作自己的网站
  • 济南网站建设公司晟创未来wordpress xml插件
  • 前端做商城网站需要多久实训课网站开发个人小结
  • 南宁网站seo排名优化手机网站制作架构
  • 亿唐网不做网站做品牌案例分析seo 推广服务
  • 深圳网站建设服务器如何编写一份网站开发需求文档
  • 营销网站策划wordpress主题在线汉化插件下载
  • 深圳市网站开发个人养老保险金怎么交
  • 超炫html5网站模板新手做网站怎么上传系统
  • 一个网站的二级目录在另一台服务器上_怎么做网络营销工程师前景
  • 个人网站推广软件企业网站建设变相收取等级保护费6
  • 有没有一些网站可以做问卷个人网站 服务器
  • 网站前端WordPress怎么自定义页眉
  • 常州企业免费建站秦皇岛市住房公积金管理中心
  • 网站建设网站需要什么软件有哪些使用wordpress开发一个页面
  • 贵溪市城乡建设局网站手机网站推荐
  • wordpress多站点的路径深圳龙岗区宝龙街道
  • 做外贸免费发布产品的网站装修软件app哪个好
  • 网站注册系统医疗器械分类目录2021
  • 珠海建设网站百度收录有什么好处
  • 二手网站专业做附近人的有吗免费申请网站永久
  • 校园二手市场网站开发网站文章优化流程方案
  • 手机网站的必要性衡水网站设计费用
  • 厦门市建设安全管理协会网站网站登录模板下载
  • 江苏启安建设集团有限公司网站wordpress图标字体不显示不出来
  • 网络营销网站规划建设实训作业免费云空间
  • 杭州建设网站官网想学做宝宝食谱上什么网站