美文网首页
使用 ScopeGuard 让代码更加安全可靠

使用 ScopeGuard 让代码更加安全可靠

作者: cptn3m0 | 来源:发表于2020-03-10 14:44 被阅读0次

    ScopeGuard用于实现Go语言中defer的功能。其主要思想和ScopeLock类似,即利用C++栈展开机制——C++ runtime会对scope抛出异常之前定义的栈上对象进行逐个析构——达到出现异常时能够正常回滚的功能.

    ScopeGuard 哪里找

    1. Boost
    2. Folly

    Boost

    #include <folly/ScopeGuard.hpp>
    
    // my code:
    auto resource = acquireResource(...);
    SCOPE_EXIT{releaseResource(resource);}
    

    folly

    #include <boost/scope_exit.hpp>
    
    // my code
    auto resource = acquireResource(...);
    BOOST_SCOPE_EXIT(&resource) { // capture resource by reference
        releaseResource(resource);
    } BOOST_SCOPE_EXIT_END
    
    

    简评

    采用类似 defer 的用法, 会

    • Boost 中的捕捉环境变量的用法类似 lambda 中的捕获列表
    • folly的用法简单一些.

    相关文章

      网友评论

          本文标题:使用 ScopeGuard 让代码更加安全可靠

          本文链接:https://www.haomeiwen.com/subject/tkiidhtx.html