Linux多线程编程笔记

来源:互联网 发布:纳米盒一类的软件 编辑:程序博客网 时间:2024/05/16 13:54

一、基本概念

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

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删除信号量


0 0