再论进程
多进程实现同时读取键盘和鼠标
使用进程技术的优势
(1)CPU时分复用,单核心CPU可以实现宏观上的并行
(2)实现多任务系统需求(多任务的需求是客观的)进程技术的劣势
(1)进程间切换开销大
(2)进程间通信麻烦而且效率低解决方案就是线程技术
(1)线程技术保留了进程技术实现多任务的特性。
(2)线程的改进就是在线程间切换和线程间通信上提升了效率。
(3)多线程在多核心CPU上面更有优势。
线程的引入
使用线程技术同时读取键盘和鼠标
linux中的线程简介
(1)一种轻量级进程
(2)线程是参与内核调度的最小单元
(3)一个进程中可以有多个线程线程技术的优势
(1)像进程一样可被OS调度
(2)同一进程的多个线程之间很容易高效率通信
(3)在多核心CPU(对称多处理器架构SMP)架构下效率最大化
线程常见函数
线程创建与回收
(1)pthread_create 主线程用来创造子线程的
(2)pthread_join 主线程用来等待(阻塞)回收子线程
(3)pthread_detach 主线程用来分离子线程,分离后主线程不必再去回收子线程线程取消
(1)pthread_cancel 一般都是主线程调用该函数去取消(让它赶紧死)子线程
(2)pthread_setcancelstate 子线程设置自己是否允许被取消
(3)pthread_setcanceltype线程函数退出相关
(1)pthread_exit与return退出
(2)pthread_cleanup_push
(3)pthread_cleanup_pop获取线程id
(1)pthread_self
线程同步之信号量12
任务:用户从终端输入任意字符然后统计个数显示,输入end则结束
使用多线程实现:主线程获取用户输入并判断是否退出,子线程计数
(1)为什么需要多线程实现
(2)问题和困难点是?
(3)理解什么是线程同步信号量的介绍和使用
线程同步之互斥锁
什么是互斥锁
(1)互斥锁又叫互斥量(mutex)
(2)相关函数:pthread_mutex_init pthread_mutex_destroy
pthread_mutex_lock pthread_mutex_unlock
(3)互斥锁和信号量的关系:可以认为互斥锁是一种特殊的信号量
(4)互斥锁主要用来实现关键段保护用互斥锁来实现上节的代码
注意:man 3 pthread_mutex_init时提示找不到函数,说明你没有安装pthread相关的man手册。安装方法:1、虚拟机上网;2、sudo apt-get install manpages-posix-dev
线程同步之条件变量
什么是条件变量
相关函数
pthread_cond_init pthread_cond_destroy
pthread_cond_wait pthread_cond_signal/pthread_cond_broadcast使用条件变量来实现上节代码
线程同步总结
linux线程全解
最新推荐文章于 2024-08-03 21:34:14 发布
本文深入探讨了进程和线程在实现并发操作中的角色。进程技术提供了多任务环境,但面临切换开销大和通信效率低的问题。线程作为进程的轻量级形式,能更高效地进行上下文切换和通信,尤其在多核CPU中更具优势。文章介绍了线程创建、同步机制如互斥锁和条件变量,并通过实例展示了如何使用这些工具实现并发任务,如统计用户输入字符。
摘要由CSDN通过智能技术生成