摘要: 如果有一个队列,方法一和方法二;方法一是生产者,方法二是消费者; 两者不停的相互等待,加减锁,为了减少不必要的等待,我们可以使用条件变量, 条件的变量的第二个参数的加入可以控制多个线程的”消费“情况 阅读全文
posted @ 2016-12-14 23:52 卖雨伞的小男孩 阅读(221) 评论(0) 推荐(0) 编辑
摘要: unique更方便使用,但是会消耗更多的计算机性能 onceflag保证一个线程被调用一次,防止不能的加锁开锁 阅读全文
posted @ 2016-12-14 23:39 卖雨伞的小男孩 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 如果有两把锁 lock1(mutex_gard 方式)和lock; 两者的调用顺序不同,会出现相互等待的情况,从而造成死锁; 为了避免死锁,我们可以: 1、每个线程中锁的调用顺序都相同; 2、使用std:: lock(); 具体用法;在主线程和子线程都调用的方法中 std::lock(mutex1, 阅读全文
posted @ 2016-12-14 23:26 卖雨伞的小男孩 阅读(923) 评论(0) 推荐(0) 编辑
摘要: 看两个代码: 以上由于共用资源cout对象,而出现不规律的输出; 可以通过加入mutex对象进行加锁,需要包含头文件mutex.h 注意:线程的安全永远是相对的,根据需要控制安全级别 阅读全文
posted @ 2016-12-14 23:12 卖雨伞的小男孩 阅读(983) 评论(0) 推荐(0) 编辑
摘要: 一、多进程和多线程对比 多进程:进程不止一个,开销比较大,通信方式比较复杂(可以用过管道、文件、消息队列进行通信),维护成本不高。 多线程:利用共享内存的方式进行指令的执行,开销比较低,但是维护起来比较麻烦,需要考虑到共享资源的问题。不支持分布式运算。 二、多线程举例 三、多线程管理 1、 2、线程 阅读全文
posted @ 2016-12-14 22:41 卖雨伞的小男孩 阅读(10340) 评论(0) 推荐(1) 编辑
摘要: 调用外部命令 如果用默认浏览器,就调用ShellExecute(NULL, _T("open"), _T("explorer.exe"), _T("http://www.baidu.com"), NULL, SW_SHOW); 如果用IE打开,就调用ShellExecute(NULL, _T("op 阅读全文
posted @ 2016-12-14 15:24 卖雨伞的小男孩 阅读(3695) 评论(1) 推荐(0) 编辑