Linux多线程编程笔记

一、基本概念

采用多线程的方式,线程间的通信可以使用共享的全局变量,运行于一个进程中的多个线程使用相同的地址空间、共享大部分的数据,启动和切换一个线程的时间开销也比较小。

pthread_create:创建线程

pthread_exit:线程结束

pthread_join:等待线程结束

二、访问共享变量

1、上锁

由于多个线程极有可能访问共享的资源,可通过加锁的机制,类似于多进程间的信号量机制。

在主线程中初始化为解锁状态,在访问共享对象之前进行加锁操作,访问共享对象后进行解锁操作。

其实也可以理解为取信号,取得到1就解锁,取不到就阻塞。

即:若mutex处于解锁状态,加锁操作成功,pthread_mutex_lock立即返回,从而顺利进入关键区;

若mutext处于加锁状态,othread_mutex_lock将一直阻塞到mutex被解锁。

2、信号量

信号量本质上是一个非负的整数计数器,被用来控制对公共资源的访问

sem_init初始化信号量

sen_wait实现信号量减一操作

sem_post加一操作

sem_destory删除信号量


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值