由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 请教一个C++11的问题(设计blocking queue)
相关主题
thread-safe 的 queueC++11一个新特点都举不出来是不是很夸张
LI面试题: 实现Blocking Queue请问什么是bounded blocking queue
王垠的[40 行代码]: 普通琐男码工们都跪安吧! (转载)实现一个 thread-safe blocking queue这题怎么写啊?L家的常考
请教一道题thread safe blocking queue问题
implement Blocking Queue in javaJava Blocking Queue问题
Code a non blocking thread safe queue这个Java blocking queue实现是不是有问题?
设计一种数据机构实现大数相加和相乘有时候java 8也是傻逼
leetcode OJ出新版了!学习C++11
相关话题的讨论汇总
话题: queue话题: locker话题: cond话题: empty话题: wait
进入JobHunting版参与讨论
1 (共1页)
s********u
发帖数: 1109
1
就是用condition_variable的时候,wait函数有一个参数是predicate,一般就是传一
个bool函数进去。
但我用gcc 4.8.1试了下这几种都不行(设计blocking queue):
_cond.wait(locker, [](){ return !_queue.empty() } );
_cond.wait(locker, []{ return !_queue.empty() } );
bool notEmpty(){return !_queue.empty() ;}
_cond.wait(locker, notEmpty);
错误是: 'this' was not captured for this lambda function
编译器问题?
顺便问下就是这种写法等效么:
while(_queue.empty())
_cond.wait(locker);
要是等效就不费事了。
t****t
发帖数: 6806
2
这不是说得很清楚了么, "this" is not captured. 所以你需要capture "this":
...locker, [this](){ return !_queue.empty(); });

【在 s********u 的大作中提到】
: 就是用condition_variable的时候,wait函数有一个参数是predicate,一般就是传一
: 个bool函数进去。
: 但我用gcc 4.8.1试了下这几种都不行(设计blocking queue):
: _cond.wait(locker, [](){ return !_queue.empty() } );
: _cond.wait(locker, []{ return !_queue.empty() } );
: bool notEmpty(){return !_queue.empty() ;}
: _cond.wait(locker, notEmpty);
: 错误是: 'this' was not captured for this lambda function
: 编译器问题?
: 顺便问下就是这种写法等效么:

s********u
发帖数: 1109
3
非常感谢,解决了!但我看很多教程上面都是不写这一项的,或者写"=" "&"之类,所
以不太清楚这一项到底是什么含义呢

【在 t****t 的大作中提到】
: 这不是说得很清楚了么, "this" is not captured. 所以你需要capture "this":
: ...locker, [this](){ return !_queue.empty(); });

J****3
发帖数: 427
4
改成这样试试[&]
t****t
发帖数: 6806
5
就是你这个lambda function里能看到多少外面的东西. =就是全部的value, &就是全部
的引用, 等等

【在 s********u 的大作中提到】
: 非常感谢,解决了!但我看很多教程上面都是不写这一项的,或者写"=" "&"之类,所
: 以不太清楚这一项到底是什么含义呢

s***e
发帖数: 403
6
=是上下文默认按照值来capture
&是上下文默认按照引用来capture
如果你有上下文不想默认capture的,可以[=, &a, &b]这样的来声明。
s***e
发帖数: 403
s********u
发帖数: 1109
8
非常感谢!

【在 s***e 的大作中提到】
: =是上下文默认按照值来capture
: &是上下文默认按照引用来capture
: 如果你有上下文不想默认capture的,可以[=, &a, &b]这样的来声明。

1 (共1页)
进入JobHunting版参与讨论
相关主题
学习C++11implement Blocking Queue in java
发发我自己的Bloomberg的面经Code a non blocking thread safe queue
C++, empty class has 4 or 6 default function设计一种数据机构实现大数相加和相乘
请教Trading Systems Engineer的职业发展是咋样的? (转载)leetcode OJ出新版了!
thread-safe 的 queueC++11一个新特点都举不出来是不是很夸张
LI面试题: 实现Blocking Queue请问什么是bounded blocking queue
王垠的[40 行代码]: 普通琐男码工们都跪安吧! (转载)实现一个 thread-safe blocking queue这题怎么写啊?L家的常考
请教一道题thread safe blocking queue问题
相关话题的讨论汇总
话题: queue话题: locker话题: cond话题: empty话题: wait