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

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. 【转】SVN 查看历史信息

    转载地址:http://lee2013.iteye.com/blog/1074457 SVN 查看历史信息 通过svn命令可以根据时间或修订号去除过去的版本,或者某一版本所做的具体的修改.以下四个命令 ...

  2. WebDriver使用指南(完整篇)

    第1章        入门 1.1   下载selenium2.0的lib包 http://code.google.com/p/selenium/downloads/list 官方UserGuide: ...

  3. Winform知识

    文档界面 分类: 1.单文档界面应用程序(SDI) 特点: 1.应用程序中SDI的所有窗体都彼此独立 2.多文档界面应用程序(MDI) 特点: 1.每个应用程序中只能有一个MDI父窗体,在父窗体中可以 ...

  4. JAVA类访问URL

    URI uri = new URI("https://www.baidu.com/");        Desktop desktop = null;        if (Des ...

  5. AIM Tech Round 3 (Div. 2) A

    Description Kolya is going to make fresh orange juice. He has n oranges of sizes a1, a2, ..., an. Ko ...

  6. MDI窗体容器和权限设置.avi

    一.MDI窗体容器 MDi窗体是装Form的容器.平常Form(窗体)就是平常展示的最高级别,但是MDI比Form还高级.它可以让其它窗体在它的内部打开,无法超出它的范围 1 创建:将某个窗体的属性: ...

  7. java-以月为单位,得到一年中某一个月份的范围

    简单说:得到某一月份的第一天,第一小时,第一分钟,第一秒和某一月份的最后一天,最后一小时,最后一分钟,最后一秒. 实现: //月初 private Date getBeginTimeOfMonth(i ...

  8. BZOJ 1565 植物大战僵尸(最大权闭合图)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1565 题意:植物大战僵尸,一个n*m的格子,每 个格子里有一个植物,每个植物有两个属性: ...

  9. JAVA_输入输出流 异常处理

    输入输出流 文件创建

  10. python处理字符串时出现的错误'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)" 解决方法

    解决办法,在该python文件的前面加上如下几句,问题得到解决. import sys default_encoding = 'utf-8' if sys.getdefaultencoding() ! ...