c++ - 循环中的 Poco ScopedLock

标签 c++ mutex poco

假设我有这样的东西:

#include <iostream>
#include <Poco/Mutex.h>

Poco::FastMutex mutex;

int main()
{
    for(int i = 0; i < 10; ++i)
    {
        Poco::FastMutex::ScopedLock lock(mutex);

        // do some stuff...
    }

    return 0;
};

互斥锁是在每次迭代中获取还是只获取一次?如果我想保护整个循环,像这样将它移到外面会更好吗?

{
    Poco::FastMutex::ScopedLock lock(mutex);

    for(int i = 0; i < 10; ++i)
    {

        // do some stuff...
    }

    return 0;
}

最佳答案

每次迭代都会获取互斥量。
所以是的,您必须将锁移到循环外以保护整个循环。

关于c++ - 循环中的 Poco ScopedLock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23700596/

相关文章:

c++ - 线程安全标准 :list C++

c# - 我究竟做错了什么? wcf 和 Entity Framework

c# - 我应该将验证逻辑放在 POCO 中吗?

entity-framework - EF 4.0 POCO 魔术不起作用——未检测到任何更改

c++ - 迭代 map 并调用删除其他元素的函数是 map

C++语法帮助,使用模板

asynchronous - 如何使用 Warp 异步路由实现共享应用程序状态?

c++ - 从命令行编译一个 Qt 项目

c++ - 使用光流 PyrLK 根据 haar 检测结果跟踪多个对象

c++ - 有没有在boost 1.48.0下使用mutex的最新例子?