笔记18

消息队列

消息队列:传送有格式的消息流
多进程网状交叉通信、实现大规模的数据通信
使用内核中的链表
消息队列是随内核持续的

线程

什么是线程
线程是进程的一个实体,它是程序运行的最小单位。同一进程下的线程可以通过全局变量通信
为什么要学习线程:
1、线程是进程的一个实体,它是程序运行的最小单位,它比进程要消耗更少的资源
2、能共享地址空间(进程)(堆栈)
线程由哪些组成
1、指令指针(指向当前被指向的命令)
2、一个栈(函数栈)
3、寄存器的集合(状态寄存器:一部分正在运行中的处理器的状态)
4、一个私有的数据区

线程的特点:
1、线程切换的开销很低
2、线程的通信机制简单

线程并不是操作系统中内核所提供的而是由线程库来提供libpthread.a/.so,离不开OS的支持

int pthread_create(pthread_t *restrict tidp,const pthread_attr_t attr,voidstart_rtn)(void),void *restrict arg);
pthread_t *thread:指向线程的指针
const pthread_attr_t attr:创建线程时的属性:NULL无属性创建
void
start_rtn)(void):线程运行的实体函数指针
void *restrict arg):运行函数的参数
注意:线程是进程的一个实体,一旦主进程结束,线程就会被回收
子线程与主线程是相互竞争的关系
pthread_join
int pthread_join(pthread_t thread, void **retval);
需要等待的进程 返回状态
创建两个次线程,两个次线程分别的向同一个文件中写“hello world\n”和“hhhhwwww\n”
线程退出:
被动退出:int pthread_cancel(pthread_t thread)
(1)功能:每次线程是死循环时,可以调动这个函数主动取消该线程
(2)返回值:失败返回非零错误号
(3)参数:thread:要取消线程的TID
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值