【操作系统】每日 3 题(十六)

✍个人博客:https://blog.csdn.net/Newin2020?type=blog

📣专栏地址:https://blog.csdn.net/newin2020/category_12820365.html

📚专栏简介:在这个专栏中,我将会分享操作系统面试中常见的面试题给大家~

❤️如果有收获的话,欢迎点赞👍收藏📁,您的支持就是我创作的最大动力💪

46. 线程属性值修改

  • 背景知识:
    线程属性对象类型为 pthread_attr_t,结构体定义如下:
cpp 复制代码
typedef struct{
    int detachstate;    // 线程分离的状态
    int schedpolicy;    // 线程调度策略
    struct sched_param schedparam;    // 线程的调度参数
    int inheritsched;    // 线程的继承性
    int scope;    // 线程的作用域
    // 以下为线程栈的设置
    size_t guardsize;    // 线程栈末尾警戒缓冲大小
    int stackaddr_set;    // 线程的栈设置
    void *    stackaddr;    // 线程栈的位置
    size_t stacksize;    // 线程栈大小
}pthread_attr_t;
  • 相关接口:
    对上述结构体中各参数大多有:pthread_attr_get() 和 pthread_attr_set() 系统调用函数来设置和获取。这里不一一罗列。

47. 常用线程模型 - 什么是 Future 模型?

该模型通常在使用的时候需要结合Callable接口配合使用。

Future 是把结果放在将来获取,当前主线程并不急于获取处理结结果。允许子线程先进行处理一

段时间,处理结束之后就把结果保存下来,当主线程需要使用的时候再向子线程索取。

Callable 是类似于 Runnable 的接口,其中 call 方法类似于 run 方法,所不同的是 run 方

法不能抛出受检异常没有返回值,而 call 方法则可以抛出受检异常并可设置返回值。两者的方

法体都是线程执行体。

48. 常用线程模型 - 什么是 fork & join 模型?

该模型包含递归思想和回溯思想,递归用来拆分任务,回溯用合并结果。可以用来处理一

些可以进行拆分的大任务。其主要是把一个大任务逐级拆分为多个子任务,然后分别在子线程中

执行,当每个子线程执行结束之后逐级回溯,返回结果进行汇总合并,最终得出想要的结果。

这里模拟一个摘苹果的场景:有 100 棵苹果树,每棵苹果树不有 10 个苹果,现在要把他们摘

下来。为了节约时间,规定每个线程最多只能摘 10 棵苹树以便于节约时间。各个线程摘完之后

汇总计算总苹果数。

相关推荐
Scott9999HH1 小时前
【IIoT流量实战】蒸汽管道阀门全关却仍有流量?用 Python 实现涡街信号 FFT 频谱分析与温压全补偿积算网关,深度拆解靠谱的涡街流量计厂家硬核技术标准
开发语言·python
腻害兔1 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
GetcharZp2 小时前
抛弃低效SSH!这套Ansible+Web可视化神器,让你天天准点下班!
后端
2401_841495642 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
码智社2 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
AI云海2 小时前
python 列表、元组、集合和字典
开发语言·python
克里斯蒂亚诺更新2 小时前
ruoyi角色权限的对应关系
笔记
触底反弹3 小时前
🔥 2026 大模型选择指南:别再只看 Benchmark 了,这些维度才是关键!
人工智能·面试
萧瑟余晖3 小时前
JDK 26 新特性详解
java·开发语言
马优晨4 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎