- 浏览: 721000 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1043)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (52)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (64)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
最新评论
#include <iostream> #include <deque> #include <thread> #include <mutex> #include <condition_variable> std::deque<int> q; std::mutex mu; std::condition_variable cond; int g_count = 5; void producer() { int count = 0; while (count < g_count) { std::unique_lock<std::mutex> locker(mu); q.push_front(++count); std::cout << "produce: " << count << std::endl; locker.unlock(); cond.notify_one(); // Notify one waiting thread, if there is one. std::this_thread::sleep_for(std::chrono::seconds(1)); } } void consumer() { int data = 0; while ( data != g_count) { std::unique_lock<std::mutex> locker(mu); while(q.empty()) cond.wait(locker); // Unlock mu and wait to be notified data = q.back(); q.pop_back(); locker.unlock(); std::cout << "consume: " << data << std::endl; } } int main() { std::thread t1(producer); std::thread t2(consumer); t1.join(); t2.join(); return 0; }
produce: 1
consume: 1
produce: 2
consume: 2
produce: 3
consume: 3
produce: 4
consume: 4
produce: 5
consume: 5
发表评论
-
std::function
2018-08-12 19:23 420#include <iostream> #i ... -
emplace_back
2018-08-02 07:40 516https://blog.csdn.net/xiaolewen ... -
输出类名
2014-02-20 21:51 543#include <iostream> us ... -
c++11应该使用的特性
2013-07-27 11:09 727http://blog.jobbole.com/44015/ -
random(new)
2013-07-21 12:00 757#include<iostream> #in ... -
tuple(new)
2013-07-15 22:11 556#include <tuple> #incl ... -
qtcreator c++11
2013-07-15 22:10 854在.pro里面:QMAKE_CXXFLAGS += -std= ... -
weak_ptr
2013-04-20 16:07 738unique_ptr(定义在中)提供了一种严格的语义上的所有权 ... -
shared_ptr(new)
2013-04-11 23:59 754#include <memory> #inc ... -
c++ lambda
2013-03-24 11:26 937#include <iostream> #i ... -
定长容器
2013-03-02 12:17 736#include<iostream> #in ... -
数组(new)
2012-10-30 22:00 613#include <iostream> us ... -
vector(new)
2012-10-21 15:05 757#include<iostream> #in ... -
auto(new)
2012-10-20 14:28 602#include<iostream> #in ... -
const
2012-10-08 23:57 1116#include<iostream> usi ... -
变量命名
2012-10-05 09:33 663#include<iostream> usi ... -
声明与定义
2012-10-04 11:33 661extern int i;//声明但未定义 int j;//声 ... -
初始化(new)
2012-10-04 11:16 1155#include<iostream> usi ... -
数字类型
2012-10-02 11:46 572我怕我翻译的不够专业,有些地方就用原文了,反正我是看懂了! 我 ... -
gcc4.7.2安装
2012-09-24 17:44 11161gcc4.7.2编译方法: 推荐第一种 1.简化版: htt ...
相关推荐
Linux互斥锁、条件变量和信号量 Linux互斥锁、条件变量和信号量 Linux互斥锁、条件变量和信号量 Linux互斥锁、条件变量和信号量 Linux互斥锁、条件变量和信号量 Linux互斥锁、条件变量和信号量 Linux互斥锁、条件...
互斥锁、条件变量、信号量是系统为实现多线程(多进程)访问共享资源或共同协作的同步机制
多线程之条件变量。 http://blog.csdn.net/tornodo
pthread 条件变量,线程同步
讲述线程池如何创建以及代码的编写,条件变量的使用。
互斥锁与条件变量详解 疑问全解
用C++封装的跨平台条件变量和互斥量,windows环境和linux环境都测试好用, 是理解条件变量和互斥量的好demo。
关于读写者问题的源码,其中,采用的方式是临界区和条件变量相结合。
适合linux-c网络编程初学者学习的多线程控制,linux下编译通过,通过互斥锁和条件变量,最终线程的运行结果输出到txt文件中。
条件变量所为一种线程安全对象,在多线程开发中,是有一些使用场景的,比如多个线程协作执行任务,或者生产者消费者模式的实现,都可以使用条件变量来进行线程控制。c语言做多线程开发,实现一个跨平台条件变量量...
多线程编程:条件变量使用。 打包文件包含两个文件:c文件源代码、Makefile文件,运行环境在Ubuntu14.04下,使用自带的gcc编译器,同学们只需将文件夹复制到某一目录下之后在终端执行:1.“make”生成“test”可执行...
一旦其他的某个线程改变了条件变量,他将通知相应的条件变量唤醒一个或多个正被此条件变量阻塞的线程。这些线程将重新锁定互斥锁并重新测试条件是否满足。一般说来,条件变量被用来进行线程间的同步。 两个线程操作...
利用条件变量实现两个线程之间的轮流顺序执行模型。实现多线程之间的互斥访问
一、互斥锁 互斥量从本质上说就是一把锁, 提供对共享资源的保护访问。 1. 初始化: 在Linux下, 线程的互斥量数据类型是pthread_mutex_t.... 对于静态分配的互斥量, 可以把它设置为PTHREAD_MUTEX_INITIALIZER, 或者...
linux线程池 条件变量 互斥,讲解线程池的使用条件
多线程条件变量列子 c++
说明:编译时加上参数 -lrt -lpthread 要不然找不到库文件
基于Linux C++的条件变量实现的生产者消费者模型,旨在进一步帮助读者理解条件变量的使用。
条件变量是线程之前同步的另一种机制。条件变量给多线程提供了一种会和的场所。当条件变量和互斥锁一起使用时,允许线程以无竞争的方式等待特定的条件发生。这样大大减少了锁竞争引起的线程调度和线程等待。 ...