2021.4.02学习笔记

进程间的通信方式

消息队列

消息队列的特点

(1)传送的是有格式的消息流
(2)多进程网状交叉通信,实现大规模数据通信
(3)使用内核中的链表(实现机制)
posix的消息队列和系统V消息队列区别

线程

什么是线程

线程是进程的一个实体,它是程序运行的最小单位

为什么要学习线程

1、线程是进程的一个实体,它是程序运行的最小单位,它比进程要消耗更少的资源
2、能共享地址空间(进程)(堆栈:程序栈)

线程由哪些组成

1、指令指针(指向当前被执行的命令)
2、一个栈(函数栈)
3、寄存器的集合(状态寄存器:一部分正在运行中的处理器的状态)
4、一个私有的数据区

线程的特点

线程切换的开销很低
线程的通信机制简单
线程并不是操作系统中内核所提供的而是由线程库来提供libpthread.a/.so

创建线程

pthread_create():int pthread_create(pthread_t *thread,const
pthread_attr_ *attr,void *(*start_routine)(void *),void *arg);
pthread_t *thread:指向线程的指针
const pthread_attr_t *attr:创建线程时的属性:NULL 无属性创建
void *(*start routine)(void *):线程运行的实体函数指针
void *arg:线程的参数;
注意:线程是进程的一个实体,一旦主进程运行结束,线程就会被回收
练习:创建两个此线程,两个此线程分别的向同一个文件中写“hello”“world\n”
和“hhhhhwwwwww\n”

线程等待

pthread_join()
int pthread_join(pthread_t thread, void **retval);
pthread_t thread:需要等待的线程
void **retval:返回状态

线程退出

被动退出:int pthread_cancel(pthread_thread);
1)功能
当次线程是死循环时,可以调用这个函数主动取消该线程
2)返回值
成功返回0,失败返回非零错误号。
3)参数
thread:要取消线程的TID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值