2 q3303635 q3303635 于 2016.04.07 21:20 提问

关于线程锁的问题 linux的

求教各位
关于线程锁的,问题我用大白话说,希望各位能谅解。^ ^

假如我要对一个全局变量 int global 进行操作 现在有两个线程 ThreadA ThreadB
ThreadA首先pthread_mutex_lock互斥锁mutex 然后对global进行++操作:

1、如果ThreadB 也要对global进行操作,是不是也要pthread_mutex_lock互斥锁mutex,然后如果mutex被其他线程锁上了,则阻塞?
2、ThreadB的pthread_mutex_lock 这个操作是不是我们人为的加上去的目的是为了防止其他线程访问共享资源,也就是说,如果ThreadB 不加pthread_mutex_lock也是能
够对global进行操作的,但肯定是对程序不利的,但是可以操作的?
3、互斥锁的概念是不是没有对global进行任何的操作,不是说你加了mutex,并且调用
函数吧mutex锁住了,我在其他的地方就不可以操作global了,而是我也得加个锁mutex的东西,来人为的去实现这个机制?
4、最后这个比喻对不对,现在global是个房子,房子外面有一条路,路上有个门,门上有个锁mutex,你要访问global这个房子,可以不走这条路,也能访问,但现在是我要求凡是你要访问这个房子的地方,你都得过来走这条路,然后这条路上的门如果被锁住了,你就得等着,要求你不可以走别的路,这个比喻对么?

困扰了我好久,谢谢各位了!!!!!

2个回答

CSDNXIAOD
CSDNXIAOD   2016.04.07 21:23

linux线程锁的迷思
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

oyljerry
oyljerry   Ds   Rxr 2016.04.07 21:53

mutex就是你修改全局变量的时候要先拿到锁 不然就等待其他人释放以后你才能拿到锁 再来修改全局变量

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
多线程中的锁机制
1、为什么要加入锁机制?   首先看一下单例设计模式中懒汉式(详情请点击博客《设计模式之--单例模式》)的一段代码: public class Student { private Student() { } //声明对象的引用,但是不创建对象 private static Student s = null; //调用公共方法时才创建对
Linux 线程锁详解
在Posix Thread中定义有一套专门用于线程同步的mutex函数。   1. 创建和销毁   有两种方法创建互斥锁,静态方式和动态方式。POSIX定义了一个宏PTHREAD_MUTEX_INITIALIZER来静态初始化互斥锁,方法如下: pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER; 在LinuxThreads实现中,pthr
linux多线程锁机制
1. 访问共享资源的代码区域称为临界区。自旋锁(spinlock)和互斥体(mutex)是保护内核临界区的两种基本机制。 2.互斥锁:pthread_mutex,属于sleep-waiting类型的锁。互斥量是实现最简单的锁类型,因此有一些教科书一般以互斥量为例对锁原语进行描述。互斥量的释放并不仅仅依赖于释放操作,还可以引入一个定时器属性。如果在释放操作执行前发生定时器超时,则互斥量也会释放代码
关于Java锁的面试总结
面试过程中,也被问过几次关于Java中锁的问题,面试官一般是这么问:你了解Java中的锁吗?有几种?都有什么区别?讲一讲。     大致可以分为这几点:锁是什么,有什么用,有哪几种锁,锁的区别。 一:锁是什么,有什么用?   锁主要用来实现资源共享的同步。只有获取到了锁才能访问该同步代码,否则等待其他线程使用结束释放锁。 二:有哪几种锁?   这里主要针对:synchro
linux多线程学习(四)——互斥锁线程控制
在前面的文章中提及到,一个进程中的多个线程是共享同一段资源的,由于线程对资源的竞争引出了锁。其中mutex是一种简单的加锁方法,这个互斥锁只有两种状态,那就是上锁和解锁,可以把互斥锁看作是某种意义上的全局变量。在某一时刻,只能有一个线程取得这个互斥上的锁,拥有上锁状态的线程可以对共享资源进行操作,而其他线程在该线程未解锁之前,够会被挂起,直到上锁的线程解开锁。可以这么说,互斥锁使得共享资源按序的在
Linux多线程锁属性设置
互斥锁是Linux下多线程资源保护的常用手段,但是在时序复杂的情况下,很容易会出现死锁的情况。可以通过设置锁的属性,避免同一条线程重复上锁导致死锁的问题。通过int pthread_mutexattr_settype(pthread_mutexattr_t *attr, int type)接口设置一般是以下四种属性:PTHREAD_MUTEX_NORMAL This type of mutex do
线程和锁总结
java线程池的好处:1:减少在创建和销毁线程上的时间及系统开销,2:如果不使用线程池 有可能造成系统创建大量的线程导致内存消耗完线程池得4个基本组成部分:1:线程池管理器:负责创建和销毁线程   2:工作线程:没用任务时处于等待状态 可以循环地执行任务   3:任务接口:每个线程必须实现的接口 ,以供工作线程调度任务的执行   4:任务队列:存放没有处理的任务,提供一个缓冲机制。锁优化的方式有5...
多线程中锁的概念python
多线程中锁的概念python 好几个人问我给资源加锁是怎么回事,其实并不是给资源加锁, 而是用锁去锁定资源,你可以定义多个锁, 像下面的代码, 当你需要独占某一资源时,任何一个锁都可以锁这个资源
多线程锁机制
线程安全分析     多个线程并发执行会带来安全问题,就好比搬家这项工作,虽然人多了干活会比较快,但是人多很容易损坏物件。在线程安全问题中,非常有名的问题就是银行取钱问题。   银行的取钱流程是这样的:   1.验证用户名和密码   2. 用户输入取款金额   3.系统判断余额是否大于取款金额,如果大于则取款成功;否则,取款失败。   4. 系统
线程互斥锁
进程,线程锁。支持windows,linux 。有测试代码和makefile。