Linux线程操作

线程操作

声明:这部分的内容主要来源于Linux C程序设计大全 清华大学出版社


首先了解一下几个概念:

临界区:进程中访问临街资源的代码成为临界区,临界区内一般放的是1个以上的进程或者线程公用的数据
临界资源:临界资源是指每次只允许一个进程访问的资源。常见的临界资源有:硬件:打印机,磁带机   软件:消息缓冲队列、变量、数组缓冲区
Linux环境下使用pthread_mutex_t表示互斥量。Linux使用pthread_mutex_init()对互斥量进行初始化。其函数原型是: int pthread_mutex_init(pthread_mutex_t *restrict mutex,const pthread_mutexattr_t *restrict attr);

函数中的第一个参数是互斥量的指针,第二个参数是互斥量的属性。如果是空的话则使用的是互斥锁的默认属性,快速互斥锁。

pthread_mutexattr_init()函数成功完成之后会返回零,其他任何返回值都表示出现了错误

函数成功执行后,互斥锁被初始化为未锁住态。


得到和释放互斥量

互斥量对于用户来说是透明的数据结构,用户不能直接对其进行操作,应该使用系统提供的操作函数:

#include <pthread.h>

int pthread_mutex_lock(pthread_mutex_t *mutex);

int pthread_mutex_trylock(pthread_mutex_t *mutex);

int pthread_mutex_unlock(pthread_mutex_t *mutex);

前两个函数是用来得到一个互斥量的锁,第三个函数是用来解锁的,第一个和第二个区别是和第一个不同的是第二个在得不到互斥量的锁的时候并不会导致线程阻塞,而是立即返回一个EBUSY值表示申请的锁处于繁忙状态。

这几个函数都是当返回0的时候表示的是成功加锁或者解锁


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值