QNX学习笔记1 进程与线程基础 process and thread fundamentals

一、进程和线程(process and thread)

进程(process)比作房子(house) 居住的人(occupants)比作线程(threads)

进程是被动的(passive) 线程是主动的(active)

单线程(single threaded)好比一个人住 多线程(multi threaded)好比多个人住

一个进程的所有线程共用内存(memory)

二、互斥(mutual exclusion) 缩写即 mutex

好比你在浴室洗澡别人就要等你洗完 mutex比作了浴室的门锁

有趣的是 mutex又不完全和门锁的作用相同

它是一个“可咨询的锁”,如果线程不遵循使用mutex的原则 mutex 就是无效的 好比有人暴力撬开你浴室的门和你一块洗澡哈哈哈

三、优先级(priorities)

假如浴室门外有一群人等着洗澡,那么就要有一种方式决定谁下一个去洗

线程主要通过 优先级(priority)和 等待时长(length of wait),且先考虑优先级再考虑等待时长

QNX Neutrino 中优先级分为 1(最低)~255(最高)

一个子线程从父线程继承调度策略(scheduling policy)和优先级,但是可以使用pthread_setschedparam() 改变调度策略和优先级,或者使用 pthread_setschedprio() 只改变其优先级

四、信号量(semaphores)

假如在厨房的话,就可以同时有多个人。这时mutex变为了semaphore,可以理解在门外留下N把钥匙,只要门外有钥匙就可以进入。

可以说mutex是一种特殊的semaphore,在大多数情况下都是用信号量(semaphore),在某些特定的环节会用到mutex,因为这就像你家里不可能没有浴室一样,也不可能你把浴室的钥匙随便挂在外面。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值