第十二节 多线程编程
来源:互联网 发布:java 自定义日志注解 编辑:程序博客网 时间:2024/06/05 10:34
线程是进程内部的一个执行单元,它是CPU调度和分配的基本单元。
多线程的意义:
1.提高应用程序的响应速度
2.提高多CPU系统的效率
线程与进程的比较
1.线程开销小,切换块,是一种节俭的多任务操作方式
2.线程之间的通信机制更加高效
1.linux的线程机制
系统级线程和用户级线程是线程实现的两种基本方法:区别在于线程的调度者在内核之中还是在内核外部,前者有利于并发使用
多处理器的资源,而后者则更多的考虑了上下文切换的开销。
2.线程的基本操作
线程有3种基本状态:执行、就绪和阻塞。
对应着5种基本操作:创建、阻塞、激活、调度和终止。
编写linux系统下的多线程程序,需要使用头文件pthread.h,连接时,需要使用库libpthread.a 。
1.线程的创建
pthread_creat
2.线程的合并
合并两个线程所使用的函数为pthread_join,它的作用是使一个线程等待另一个线程结束,将他们合并在一起。
3.线程的终止
1.线程自身调用pthread_exit函数
2.其他线程调用pthread_cancel函数
3.从主函数返回
4.线程所属的进程中任何线程调用exit函数导致所有线程结束
4.线程的属性
。。。。
3.线程的同步
实现线程同步的主要方式:互斥量、条件变量、和信号量
1.互斥量
pthread_mutex_init
pthread_mutex_destroy
pthread_mutex_lock
pthread_mutex_unlock
2.条件变量
而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了这一不足,它通常和互斥量一起使用。
pthread_cond_init
pthread_cond_destroy
条件变量的等待包括两种方式:无条件等待pthread_cond_wait和计时等待pthread_cond_timedwait,计时等待是指如果
在给定时刻前条件没有满足,则返回TIMEOUT,结束等待。
条件变量的激发也包括两种方式:
激活一个等待线程pthread_cond_signal和激活所有等待线程pthread_cond_broadcast
3.信号量
他的初始化和注销函数分别为:sem_init和sem_destroy
函数sem_post用来增加信号量的值,当有线程阻塞在这个信号量时,调用这个函数会激活其中的一个线程,
函数sem_wait用来阻塞当前线程直到信号量的值大于0,解除阻塞后将信号量的值减1,
- 第十二节 多线程编程
- Linux高级编程复习 第十二章 多线程概念_互斥锁--_多线程同步_信号_条件量_信号量
- 第十二章:Swing编程
- 第十二章 并发编程
- 第十二章 编程练习
- 编程第十二天
- 朱金付第十二章编程
- Java基础---第十二天 多线程
- 大家一起来编程第十二期
- Windows Shell 编程 第十二章
- Windows Shell 编程 第十二章
- 第十二章 面向语言编程
- 第十二章 APO编程语言
- 第十二章编程练习(1)
- 第十二章编程练习(2)
- 第十二章编程练习(3)
- 编程珠玑第十二章习题
- 第十二章编程练习(5)
- RT-Thread内核之线程调度(二)
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
- 黑马程序员-oc基础-Foundation中NSString类型的一些用法
- CF311 div2
- java学习之旅59--模拟ArrayList容器的底层实现_JDK源码分析ArrayList
- 第十二节 多线程编程
- TDNN时延神经网络
- C++ 模板详解(一)
- js操作cookie
- HDU 1242
- 包装质料---五种常见巧克力包装质料简介
- [资源贴]黑马iOS培训视频
- 数据挖掘学习整理(十)分类算法
- 黑马程序员-oc基础-NSString和NSMutableString区别