小编Sar*_*rah的帖子

监视器和条件变量,它们相同吗?

我对 Wiki 上关于监视器的描述感到很困惑,它说:

\n\n
\n

监视器由\xc2\xa0互斥体(锁)\xc2\xa0对象和\xc2\xa0条件变量组成。\n A\xc2\xa0条件变量\xc2\xa0基本上是等待特定条件的线程的容器。监视器提供了一种机制,让线程暂时放弃独占访问,以便在重新获得独占访问并恢复其任务之前等待满足某些条件。

\n
\n\n

我的问题是:这看起来正是cond.wait(locker, [](){return !q.empty();});C++ 中的情况。为什么叫监视器呢?它们是一样的吗?谢谢!

\n\n
mutex mu;\ncondition_variable cond;\n...        \nunique_lock<mutex> locker(mu);\ncond.wait(locker, [](){return !q.empty();});\n
Run Code Online (Sandbox Code Playgroud)\n

c++ concurrency multithreading mutex monitor

8
推荐指数
1
解决办法
2735
查看次数

如何从python中的字符串中提取令牌?

我是Python的新手,我知道Perl可以做到这一点,但我还没有在Python中找到它.我想要做的是从一行中提取一个令牌.

p = re.compile('555=\d+')
ID = p.findall(line)
Run Code Online (Sandbox Code Playgroud)

其中line是文件中的单行,并且应记录555 =之后的数字.但是,有了这两行,我只能得到像555 = 1234567这样的东西,我真正想要的是1234567.任何人都可以帮忙并建议一个解决方案吗?谢谢!

python regex

4
推荐指数
1
解决办法
3080
查看次数

如何以升序输出unordered_map中的元素?

我在 unordered_map 中存储了一些中间结果。现在当试图输出它时,它显示键是按降序排列的。有没有办法以其他顺序显示它?如何?

c++ stl unordered-map

3
推荐指数
1
解决办法
3400
查看次数

lambda函数返回类型不起作用

我有以下代码,发现我无法将lambda函数的输出显式转换为bool.我在在线IDE http://ideone.com/上验证了这一点,我选择了C++ 14.

#include <iostream>
using namespace std;

int main() {
    int number = 10;
    int bar = 6;
    auto numberisLarger = [&]() -> bool {return number > bar;};
    bool isLarger = numberisLarger;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,我收到编译错误如下.

error: cannot convert 'main()::<lambda()>' to 'bool' in initialization
     bool isLarger = numberisLarger;
Run Code Online (Sandbox Code Playgroud)

我明确地将它转换为bool,为什么它不起作用?谢谢!

c++ lambda

0
推荐指数
1
解决办法
44
查看次数