named_creation_template.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 85 行
HPP
85 行
////////////////////////////////////////////////////////////////////////////////// (C) Copyright Ion Gaztanaga 2004-2007. Distributed under the Boost// Software License, Version 1.0. (See accompanying file// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)//// See http://www.boost.org/libs/interprocess for documentation.////////////////////////////////////////////////////////////////////////////////#ifndef BOOST_INTERPROCESS_TEST_NAMED_RESOURCE_TEMPLATE_HEADER#define BOOST_INTERPROCESS_TEST_NAMED_RESOURCE_TEMPLATE_HEADER#include <boost/interprocess/detail/config_begin.hpp>#include <boost/interprocess/exceptions.hpp>#include "boost_interprocess_check.hpp"#include <iostream>#include <typeinfo>#include <boost/interprocess/creation_tags.hpp>namespace boost { namespace interprocess { namespace test {template <class NamedResource>inline void create_then_open_then_open_or_create(){ try{ //Create it and open it twice NamedResource nresource1(create_only); NamedResource nresource2(open_only); NamedResource nresource3(open_or_create); } catch(...){ //This shouldn't throw so show the error BOOST_INTERPROCES_CHECK(false); }}template <class NamedResource>inline void open_or_create_then_create(){ //Create it with open_or_create and try to create it twice NamedResource nresource1(open_or_create); try{ NamedResource nresource2(create_only); } catch(interprocess_exception &err){ BOOST_INTERPROCES_CHECK(err.get_error_code() == already_exists_error); }}template <class NamedResource>inline void dont_create_and_open(){ //Try to open it without creating try{ NamedResource nresource1(open_only); } catch(interprocess_exception &err){ BOOST_INTERPROCES_CHECK(err.get_error_code() == not_found_error); return; } //The mutex should not exist BOOST_INTERPROCES_CHECK(false);}template <class NamedResource>inline void test_named_creation(){ std::cout << "create_then_open_then_open_or_create<" << typeid(NamedResource).name() << ">" << std::endl; create_then_open_then_open_or_create<NamedResource>(); std::cout << "open_or_create_then_create<" << typeid(NamedResource).name() << ">" << std::endl; open_or_create_then_create<NamedResource>(); std::cout << "dont_create_and_open<" << typeid(NamedResource).name() << ">" << std::endl; dont_create_and_open<NamedResource>();}}}} //namespace boost { namespace interprocess { namespace test {#include <boost/interprocess/detail/config_end.hpp>#endif //BOOST_INTERPROCESS_TEST_NAMED_RESOURCE_TEMPLATE_HEADER
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?