妈的,看了好久的相关的知识,感觉终于自己有点明白了,我一定要记下来啊,相关的知识呀。。。。

1, 也可以看一下boost的线程指南:http://wenku.baidu.com/link?url=E_zJLFJ7J6yqPC8lxYJQyimVdN8D234mVo3BHa_FIezQxfubGdHqkVfCv-b0Xia8bgzR2203QDLUKX_ic2AhHdjFTFxXAXqCCCkYJVidtLu

很全啦。

2.关于mutex与lock的一些介绍:

我用自己的话说就是:mutex是一个类,用它可以生成相应的互斥体,然后呢,我们就可以把互斥体加入到我们的线程中去啦。互斥体本身里有lock与unlock的实现, 不过是私有的,只能通过它的友元函数来调用,我们没有办法直接用。想一个简单方法:所以用lock模板类对它进行了封装,用lock模析类生成的对象相进行lock与unlock。对于mutex的使用,多个线程应该对应同一个mutex对象。

对于lock模板类来说,它把对对应类型(指的是muetx类的类型)lock与unlock操作放入到了它的构造与析构函数里了,这样可以自动完成它的使命了。

3, 关于boost::condition_variable的遇到的几点相关知识:

boost::condition_variable是用来进行多线程同步的。

我认为吧,对于notify_one和notify_all的作用就是:把一个线程对共享资源unlock(或着说,对于共享的数据操作)以后吧,还有其它线程在阻塞着呢,它俩的作用一个是通知一个线程(具体哪一个,应该有优先权吧,我猜),一个是通知所有的线程;

调用notify_one的时候,启用一个线程。

调用notify_all的时候,激活所有的线程。

对于 wait的作用:当本线程得到 了互斥体了,就本线程给它加锁了,然后在后续的相应操作过程中发现条件不满足,好吧,没办法,现在只能把锁加开了,让给别的进程啦,然后,把自己阻塞起来,等待notify(应该是由boost:condition_variable发出的notify的通知),当收到了以后呢,就加入互斥锁的队列啦,等着抢到对互斥体的lock,再继续相应的操作啦。

相关的文章可以看:

http://blog.csdn.net/gitar520/article/details/7694984

http://www.cnblogs.com/nzbbody/p/3388455.html

http://www.cnblogs.com/gelandesprung/p/4112529.html

http://www.cnblogs.com/vsuu/p/4170520.html

http://www.cnblogs.com/sanjin/archive/2012/08/09/2629890.html

我写的所以文章你们随便看,随便转·!!!,,,只要不用于盈利就好(盈利得有我的一份啊,哈哈哈)

关于boost的thread的mutex与lock的问题的更多相关文章

  1. boost库中thread多线程详解2——mutex与lock

    1. mutex对象类 mutex类主要有两种:独占式与共享式的互斥量.▲ 独占式互斥量:mutex: 独占式的互斥量,是最简单最常用的一种互斥量类型try_mutex: 它是mutex的同义词,为了 ...

  2. boost之thread

    1.boost里的thread创建之后会立即启动. 代码示例: #include <iostream> #include <string> #include <vecto ...

  3. 第29课 互斥量与自解锁(std::mutex和lock系列)

    一. 互斥量 (一)Mutex系列类 1. std::mutex:独占的互斥量,不能递归使用. 2. std::recursive_mutex:递归互斥量.允许同一线程多次获得该互斥锁,可以用来解决同 ...

  4. boost -- scoped_lock V.S. mutex lock/unlock —— why scoped_lock is recommanded?

    why scoped_lock is recommanded? 其实,这和RAII idiom变流行是一样的原因:因为你可以确保任何情况下离开执行范围都会解锁mutex. 注意,这不仅仅是说你可能忘记 ...

  5. Mutex 和 Lock

    #include <future> #include <mutex> #include <iostream> #include <string> #in ...

  6. C++11 并发之std::thread std::mutex

    https://www.cnblogs.com/whlook/p/6573659.html (https://www.cnblogs.com/lidabo/p/7852033.html) C++:线程 ...

  7. Mutex,Monitor,lock,MethodImplAttribute,SynchronizedAttribute的用法差异

    1)Mutex:进程之间的同步(互斥量). 2)lock/Monitor……:线程同步.其中lock是Monitor的简化版本(直接生成try{Monitor.Enter(……)}finally{Mo ...

  8. C++11 thread condition_variable mutex 综合使用

    #include <mutex> #include <condition_variable> #include <chrono> #include <thre ...

  9. 【C#】【Thread】Monitor和Lock

    所谓锁,就是之锁定的区域只能单个线程进入进行操作,其他线程在锁的外围等待.Monitor锁通过Monitor.Enter(obj)和Monitor.Exit(obj)来锁定和解锁.Lock锁则直接Lo ...

随机推荐

  1. python:正则表达式 re

    #re正则的用法:match匹配从开头 search 取一个就回来了,findout取所以匹配的,slit分割 sub替换 #-*- coding:utf8 -*- # Auth:fulimei #r ...

  2. 将ASCII码位于32~126的95个字符输出到屏幕上,为了美观

    //将ASCII码位于32~126的95个字符输出到屏幕上,为了美观.要求小于100的码,前面加一个0,每八个转行class shijixing{ public static void main(St ...

  3. 【转】MYSQL入门学习之十三:自定义函数的基本操作

    转载地址:http://www.2cto.com/database/201212/177382.html 一.自定义函数(UDF)的特性和功能  www.2cto.com           函数能分 ...

  4. 利用Session实现一次验证码

    Session可避免表单的重复提交:实现一次表单提交,可避免恶意提交: 1.首先建立一个Servlet类:ValidateColorServlet,里边有获取验证码的方法,并且验证码是大小写区分: p ...

  5. Uva 1103 古代象形文字

    题目链接:http://vjudge.net/contest/140550#problem/B 紫书P163. 1.根据16进制图转成2进制图. 每个点dfs一下,马上就把最外围的连通分量编号求出来了 ...

  6. Storm系列之三——Fault Tolerance

    本文介绍Storm容错的设计细节. 1.当一个worker进程死了会发生什么? 当worker死了,supervisor会重启它.如果它尝试开启多次失败并且不能与nimbus发送心跳,Nimbus会重 ...

  7. C语言中的二维数组和数组指针的那些事

    其实很多人就想弄明白这个定义了的数组指针里面赋值给的a究竟是什么 a是一个列地址,那么*a是什么,*a还是个地址它存储了行地址.如果我们定义一个指针,那他就有点二级指针的味道.因为它存储的是一个地址, ...

  8. Spring源码之SimpleAliasRegistry解读(一)

    Spring源码之SimpleAliasRegistry解读(一) 阅读spring源码中org.springframework.core.SimpleAliasRegistry类时发现该类主要是使用 ...

  9. C++析构函数定义为虚函数(转载)

    转载:http://blog.csdn.net/alane1986/article/details/6902233 析构函数执行时先调用派生类的析构函数,其次才调用基类的析构函数.如果析构函数不是虚函 ...

  10. 函数式编程之block

    语法: 注意: 1,在代码块中可以使用和改变全局变量 2,而局部变量可以使用,但是不能改变. 怎么在代码块中改变局部变量呢?在局部变量前面加上关键字:__block 参考: Objective-C语法 ...