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

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:Xml

    <data> <country name="Liechtenstein"> <rank updated="yes">2< ...

  2. html里文本保留换行格式

    用<pre></pre>把文本包起来

  3. 使用Window Live Writer写博客

    1.打开“日志账户”—>“日志选项”. 2.点击“更新账户信息”. 3.输入博客地址,用户名和密码,点击“下一步”. 4.耐心等待片刻... 5.设置“日志昵称”,点击“完成”. 这样就大功告成 ...

  4. 如何修改配置以修复ThinkPad 小红帽滚轮失效?

    本人使用ThinkPad X1 Carbon超级本,由于近期安装了遨游浏览器(Maxthon),发现其总体体验还是不错,但是在本机器上有个明显的Bug:就是小红帽的滚轮不管用. 由于就查了网上相关资料 ...

  5. js查找出现次数最多的字母

    <!doctype html><html><head><meta charset="utf-8"><title>无标题文 ...

  6. html的<marquee></marquee>标签实现滚动效果

    页面的自动滚动效果,可由javascript来实现,但是今天无意中发现了一个html标签 - <marquee></marquee>可以实现多种滚动效果,无需js控制. 使用m ...

  7. haha

    [问题描述] 栈是一种强大的数据结构,它的一种特殊功能是对数组进行排序.例如,借助一个栈,依次将数组1,3,2按顺序入栈或出栈,可对其从大到小排序:1入栈:3入栈:3出栈:2入栈:2出:1出栈.在上面 ...

  8. django学习日志之自定义用户扩展

    django 为我们提供了强大的用户认证系统,并且提供了基于该系统的User模型,所以,很多时候,我们有必要对自己的user进行业务扩展,得到满足我们自己业务需求的user.借此,写下自己的感悟. u ...

  9. VC++ 线程同步 总结

    注:所谓同步,并不是多个线程一起同时执行,而是他们协同步调,按预定的先后次序执行. 与线程相关的基本函数包括:CreateThread:创建线程CloseHandle:关闭线程句柄.注意,这只会使指定 ...

  10. sql 自增字段的控制 hibernate注解的写法

    1 创建序列,新建了一个列作为主键 create sequence pbaseinfo INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE NOCACHE; ...