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

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. 结对2.0--复利计算WEB升级版

    结对2.0--复利计算WEB升级版 复利计算再升级------------------------------------------------------------ 客户在大家的引导下,有了更多 ...

  2. WPF中viewmodel层怎样得到view层的TabControl控件对象?

    View层: <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns: ...

  3. 关于easyui的窗口和tab页面不执行js说明

    一直以来群里里面很多人反应,在用tab加载界面的时候,界面里面的js不会执行.今天GodSon在此说明一下原因. 不管是window,dailog还是tab其实质最终都是继承了panel.panel有 ...

  4. 修改win7登录界面

    只需两步,教你将喜欢的图片在设置成开机画面.   第一步,打开注册表,Win+R->运行->Regedit.依次展开,HKEY_LOCAL_MACHINE\SOFTWARE\Microso ...

  5. Software caused connection abort: socket write error

    Exception in thread "main" java.net.SocketException: Software caused connection abort: soc ...

  6. eclipse字体推荐

    首先大家可以看看这里面推荐的最佳十款字体,http://www.iteye.com/news/11102-10-great-programming-font 但是经过测试发现,排名第一的字体在ecli ...

  7. js取当前项目名称

    function getContextPath(){ var path = window.location.href; path = path.substring(0, path.lastIndexO ...

  8. shell脚本之间互相调用

    在Shell中要如何调用别的shell脚本,或别的脚本中的变量,函数呢? 方法一: . ./subscript.sh 方法二: source ./subscript.sh 注意: .两个点之间,有空格 ...

  9. django cycle标签

    django 模板系统 有很多标签,其中cycle我觉得不好理解,至少网上文档也不好理解. 这些标签可以通过渲染模板文件而获得我们预期的效果和文字,常用的有如下这些标签: 标签:{% 标签名 %}{% ...

  10. Jetty和Tomcat的选择:按场景而定

    Jetty和Tomcat的选择:按场景而定 Jetty和Tomcat为目前全球范围内最著名的两款开源的webserver/servlet容器.由于它们的实现都遵循Java Servlet规范,一个Ja ...