用在线程安全上面pthread_mutex_t

本文介绍了线程调度算法,强调了多线程在CPU资源分配中的角色。重点讲解了iOS中多线程的概念和意义,包括NSThread、GCD的使用。特别提到了在线程安全方面,pthread_mutex_t的重要作用,如在YYKit中的应用,并展示了NSThread和GCD的API示例。
摘要由CSDN通过智能技术生成

是时间片轮转调度算法和优先级调度算法的综合和发展。

有多个优先级不同的队列,每个队列里面有多个等待线程。
CPU每次从优先级高的遍历到低的,取队首的线程运行,运行完了放回队尾,优先级越高,时间片越短,即响应越快,时间片就不是固定的了。
队列内部还是用先来先服务的策略。

三、多线程工作的概念和意义
多CPU计算机中,各个线程可以占用不同的CPU:因为线程是处理机调度的单位
每个线程都有一个线程ID、线程控制块TCB:类比没有引入线程的进程的进程ID和进程控制块PCB
线程也有运行、就绪、阻塞三种基本状态
线程几乎不拥有系统资源:出了CPU外的系统资源都被分配给了进程,包括一些IO设备、内存地址空间等等
同一进程的不同线程共享进程的资源
由于共享内存地址空间,同一进程中的线程间的通信甚至无需系统干预
同一进程中的线程切换,不会引起进程切换,但是不同进程中的线程切换,则会引起进程切换
切换同一进程中的线程,系统的开销小;而切换不同进程中的线程,系统的开销较大
四、iOS中的线程
根据层级从低到高,分别是NSThread < GCD < NSOperation,下面的三部分,分别围绕着这三中多线程方案来讲述。

4.1 NSThread
说到了NSThread就要提一嘴pthreads,pthread 是一套通用的多线程的 API,可以在Unix / Linux / Windows 等系统跨平台使用,使用 C 语言编写,需要程序员自己管理线程的生命周期,使用难度较大,我们在 iOS 开发中几乎不使用 pthread。
比较典型的有两个例子:

1、用在线程安全上面pthread_mutex_t。

2、用于获取当前的线程,YYKit上有典型用法。

/**
Submits a block for asynchronous execution on a main queue and returns immediately.
*/
static inline void dispatch_async_on_main_queue(void (^block)()) {
if (pthread_main_np()) {
block();
} else {
dispatch_async(dispatch_get_main_queue(), block);
}
}
NSThread 是苹果官方提供的,使用起来比 pthread 更加面向对象&#x

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值