
2-6-1 QNX 编程入门
文章平均质量分 93
本专栏内容以QNX SDP 7.1 版本文档为参考,对2-6-1 编程:QNX Neutrino 入门 中的内容进行翻译梳理以及总结,帮助大家了解和学习。
星原飞火
从事嵌入式软件工程师相关工作
展开
-
2-6-1-1 QNX编程入门之进程和线程(八)
本文介绍条件变量(condvars)及其与休眠锁的关联。条件变量通过`pthread_cond_wait`等函数实现线程同步,需配合互斥锁使用,如生产者-消费者模型示例所示。`signal`仅唤醒一个等待线程(优先级高或随机),`broadcast`则唤醒所有,适用于不同等待条件场景。与休眠锁相比,条件变量需显式管理互斥锁,灵活性更高,虽可能需为每个对象配独立条件变量,但可通过多互斥锁设计提升并发安全性,且休眠锁基于条件变量实现。原创 2025-04-20 18:05:06 · 605 阅读 · 0 评论 -
2-6-1-1 QNX编程入门之进程和线程(七)
本文围绕同步机制展开,介绍了读写锁、休眠锁等内容。读写锁允许多读单写,有初始化、获取、释放等函数,且非递归。休眠锁用于线程等待事件,通过互斥锁和等待、唤醒机制实现同步,以生产者 - 消费者模型为例说明了其用法。还提及相关函数非 POSIX 标准,以及休眠锁与条件变量的关联等内容。原创 2025-04-20 17:55:34 · 1001 阅读 · 0 评论 -
2-6-1-1 QNX编程入门之进程和线程(六)
本文探讨了 QNX 系统中相互独立场景下的多线程问题。先从多进程(每个进程一个线程)角度阐述,其具有最松散耦合和可分布式部署优势,通信通过面向连接协议;接着介绍多进程共享内存方式,加强耦合,实现快速高效数据流,控制信息仍用面向连接协议;还提及一个进程含多个线程的系统 3,线程隐式共享数据区域,控制信息可多种方式实现。最后对比三种方式,系统 1 灵活可扩展,系统 2 可移除组件但限单机,系统 3 虽不灵活但速度快、启动优、占空间小,需按需选择。原创 2024-12-30 00:32:37 · 971 阅读 · 0 评论 -
2-6-1-1 QNX编程入门之进程和线程(五)
本文主要介绍了QNX系统下多线程在数学运算中的应用。首先以光线追踪程序为例,对比单线程和多线程版本的实现,指出简单多线程做法的问题及改进方案,即将任务按CPU数量拆分以减少栈空间浪费。接着阐述线程同步终止的问题及两种解决方法:pthread_join函数通过等待线程终止实现同步,pthread_barrier_wait函数利用屏障使线程会合后继续运行。还探讨了单CPU系统多线程的优势及时间计算,以及多线程在SMP系统中的情况和CPU利用率,最后强调使用 SMP 时的注意事项,如同步、并发和原子操作等。原创 2024-12-30 00:23:09 · 970 阅读 · 0 评论 -
2-6-1-1 QNX编程入门之进程和线程(四)
本文主要阐述了启动线程的相关内容。首先介绍了最常见的线程启动方法,即使用 POSIX pthread_create () 调用及其四个参数。接着讲解了线程属性结构体 pthread_attr_t 及其众多相关函数,包括属性管理、标志、堆栈和调度等方面。对于属性管理,使用前需调用 pthread_attr_init () 初始化;在标志方面,阐述了可连接和不可连接等设置;堆栈部分涉及设置栈地址、保护区域、栈大小等;调度方面则说明了设置调度策略和优先级的方法及常见错误。原创 2024-12-30 00:00:23 · 1100 阅读 · 0 评论 -
2-6-1-1 QNX编程入门之进程和线程(三)
本文主要讨论线程和进程在 QNX Neutrino 系统中的相关内容。首先对比了线程和进程的特性,阐述进程可分解为多线程的好处,包括解耦、模块化、可维护性和可靠性。接着介绍了启动进程的多种方式,如从命令行启动,或使用 system ()、exec ()、spawn ()、fork ()、posix_spawn () 等函数在程序内部启动,详细解释了各函数的使用、差异及适用场景。同时指出在多线程进程中使用 fork () 的问题及解决办法。原创 2024-12-29 23:47:13 · 1401 阅读 · 0 评论 -
2-6-1-1 QNX编程入门之进程和线程(二)
文章主要介绍了内核在系统中的角色相关内容。先是阐述单 CPU 与多 CPU(SMP)情况下线程运行情况,指出内核决定哪个线程在特定时刻使用 CPU 并进行上下文切换。接着讲了影响内核决定的因素,如线程优先级,高优先级可抢占低优先级;还有调度策略,包含 FIFO 和循环调度策略(RR)。随后明确了单 CPU 的调度规则,多 CPU 系统规则与之类似。还介绍了内核状态,像运行、就绪、阻塞等多种状态及各自含义,强调阻塞时线程不消耗 CPU。原创 2024-12-22 23:45:00 · 1053 阅读 · 0 评论 -
2-6-1-1 QNX编程入门之进程和线程(一)
文章围绕进程和线程展开介绍。先是将进程类比为房子,线程类比为居住者,阐述其基本概念,如进程占用内存,线程可共享内存。接着讲解同步相关内容,介绍了互斥,线程通过互斥锁来控制对特定资源的访问,像使用浴室一样。还提到优先级,线程按优先级和等待时长来决定获取资源顺序。此外,说明了信号量,以厨房为例,区分计数为 1 和大于 1 的信号情况,且指出信号量可当互斥锁用,但互斥锁是特殊用途信号量,二者存在区别,最后提及后续会介绍其他同步机制。原创 2024-12-22 22:12:56 · 1057 阅读 · 0 评论 -
2-6-1 关于“QNX Neutrino 编程入门”的前言
当前专栏系列文章翻译并整理和总结了《QNX Neutrino 入门:实时编程程序员指南》这本官方英文原版书的内容,该书旨在帮助读者了解 QNX Neutrino 实时操作系统并开发相关应用程序与资源管理器。该书适合想对该系统关键特性及工作原理有基础认知的人阅读。书中内容涵盖多个方面,如介绍进程与线程,包括其调度等情况;阐述消息传递这一基本特性及相关高级主题;讲解时钟、定时器知识;说明中断处理程序编写;介绍资源管理器及提供其源代码等,还有术语表与其他参考资料相关内容。原创 2024-12-21 22:14:38 · 814 阅读 · 0 评论