Modified examples so that they can be run in parallel.

[SVN r52391]
This commit is contained in:
Ion Gaztañaga
2009-04-14 16:22:10 +00:00
parent 9461ec89cc
commit 6b8ae87209
44 changed files with 718 additions and 395 deletions

View File

@@ -22,10 +22,10 @@ int main ()
{
//Erase previous shared memory and schedule erasure on exit
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Create a shared memory object.

View File

@@ -22,10 +22,10 @@ int main ()
{
try{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Create a shared memory object.

View File

@@ -21,9 +21,9 @@ using namespace boost::interprocess;
int main ()
{
//Remove shared memory on destruction
struct shm_destroy
struct shm_remove
{
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Open the shared memory object.

View File

@@ -19,10 +19,10 @@ using namespace boost::interprocess;
int main ()
{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Create a shared memory object.

View File

@@ -19,9 +19,9 @@ using namespace boost::interprocess;
int main ()
{
//Remove shared memory on destruction
struct shm_destroy
struct shm_remove
{
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Create a shared memory object.

View File

@@ -21,9 +21,9 @@ using namespace boost::interprocess;
int main ()
{
//Remove shared memory on destruction
struct shm_destroy
struct shm_remove
{
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Create a shared memory object.

View File

@@ -22,9 +22,9 @@ using namespace boost::interprocess;
int main ()
{
//Remove shared memory on destruction
struct shm_destroy
struct shm_remove
{
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Open the shared memory object.

View File

@@ -19,10 +19,10 @@ using namespace boost::interprocess;
int main ()
{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Create shared memory

View File

@@ -19,10 +19,10 @@ using namespace boost::interprocess;
int main ()
{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Create shared memory

View File

@@ -21,10 +21,10 @@ using namespace boost::interprocess;
int main ()
{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Create shared memory

View File

@@ -19,10 +19,10 @@ using namespace boost::interprocess;
int main ()
{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Create shared memory

View File

@@ -19,10 +19,10 @@ using namespace boost::interprocess;
int main ()
{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Create shared memory

View File

@@ -15,6 +15,9 @@
#include <boost/interprocess/containers/map.hpp>
#include <boost/interprocess/containers/vector.hpp>
#include <boost/interprocess/containers/string.hpp>
//<-
#include "../test/get_process_id_name.hpp"
//->
using namespace boost::interprocess;
@@ -53,14 +56,31 @@ typedef map< char_string, complex_data
int main ()
{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
//Create shared memory
//<-
#if 1
managed_shared_memory segment(create_only,test::get_process_id_name(), 65536);
#else
//->
managed_shared_memory segment(create_only,"MySharedMemory", 65536);
//<-
#endif
//->
//An allocator convertible to any allocator<T, segment_manager_t> type
void_allocator alloc_inst (segment.get_segment_manager());

View File

@@ -18,10 +18,10 @@ int main ()
{
using namespace boost::interprocess;
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//A managed shared memory where we can construct objects

View File

@@ -18,6 +18,9 @@
#include <cstring>
#include <cstddef>
#include <cstdlib>
//<-
#include "../test/get_process_id_name.hpp"
//->
int main(int argc, char *argv[])
{
@@ -26,8 +29,17 @@ int main(int argc, char *argv[])
if(argc == 1){ //Parent process executes this
{ //Create a file
std::filebuf fbuf;
//<-
#if 1
fbuf.open(test::get_process_id_name(), std::ios_base::in | std::ios_base::out
| std::ios_base::trunc | std::ios_base::binary);
#else
//->
fbuf.open("file.bin", std::ios_base::in | std::ios_base::out
| std::ios_base::trunc | std::ios_base::binary);
//<-
#endif
//->
//Set the size
fbuf.pubseekoff(FileSize-1, std::ios_base::beg);
fbuf.sputc(0);
@@ -35,11 +47,27 @@ int main(int argc, char *argv[])
//Remove file on exit
struct file_remove
{
//<-
#if 1
~file_remove (){ file_mapping::remove(test::get_process_id_name()); }
#else
//->
~file_remove (){ file_mapping::remove("file.bin"); }
//<-
#endif
//->
} destroy_on_exit;
//Create a file mapping
//<-
#if 1
file_mapping m_file(test::get_process_id_name(), read_write);
#else
//->
file_mapping m_file("file.bin", read_write);
//<-
#endif
//->
//Map the whole file with read-write permissions in this process
mapped_region region(m_file, read_write);
@@ -52,13 +80,25 @@ int main(int argc, char *argv[])
std::memset(addr, 1, size);
//Launch child process
std::string s(argv[0]); s += " child";
std::string s(argv[0]); s += " child ";
//<-
s += test::get_process_id_name();
//->
if(0 != std::system(s.c_str()))
return 1;
}
else{ //Child process executes this
{ //Open the file mapping and map it as read-only
file_mapping m_file ("file.bin", read_only);
//<-
#if 1
file_mapping m_file(argv[2], read_only);
#else
//->
file_mapping m_file("file.bin", read_only);
//<-
#endif
//->
mapped_region region(m_file, read_only);
//Get the address of the mapped region
@@ -73,7 +113,15 @@ int main(int argc, char *argv[])
}
{ //Now test it reading the file
std::filebuf fbuf;
//<-
#if 1
fbuf.open(argv[2], std::ios_base::in | std::ios_base::binary);
#else
//->
fbuf.open("file.bin", std::ios_base::in | std::ios_base::binary);
//<-
#endif
//->
//Read it to memory
std::vector<char> vect(FileSize, 0);

View File

@@ -72,10 +72,10 @@ class intrusive_ptr_owner
int main()
{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Create shared memory

View File

@@ -13,6 +13,9 @@
#include <boost/interprocess/managed_shared_memory.hpp>
#include <cstdlib> //std::system
#include <sstream>
//<-
#include "../test/get_process_id_name.hpp"
//->
int main (int argc, char *argv[])
{
@@ -21,12 +24,29 @@ int main (int argc, char *argv[])
//Remove shared memory on construction and destruction
struct shm_remove
{
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
//Create a managed shared memory segment
//<-
#if 1
managed_shared_memory segment(create_only, test::get_process_id_name(), 65536);
#else
//->
managed_shared_memory segment(create_only, "MySharedMemory", 65536);
//<-
#endif
//->
//Allocate a portion of the segment (raw memory)
std::size_t free_memory = segment.get_free_memory();
@@ -40,8 +60,11 @@ int main (int argc, char *argv[])
//memory segment even if it is mapped in different base addresses
managed_shared_memory::handle_t handle = segment.get_handle_from_address(shptr);
std::stringstream s;
s << argv[0] << " " << handle << std::ends;
s << argv[0] << " " << handle;
//<-
s << " " << test::get_process_id_name();
//->
s << std::ends;
//Launch child process
if(0 != std::system(s.str().c_str()))
return 1;
@@ -51,7 +74,15 @@ int main (int argc, char *argv[])
}
else{
//Open managed segment
//<-
#if 1
managed_shared_memory segment(open_only, argv[2]);
#else
//->
managed_shared_memory segment(open_only, "MySharedMemory");
//<-
#endif
//->
//An handle from the base address can identify any byte of the shared
//memory segment even if it is mapped in different base addresses

View File

@@ -17,10 +17,10 @@ int main()
using namespace boost::interprocess;
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Managed memory segment that allocates portions of a shared memory

View File

@@ -17,10 +17,10 @@ int main()
using namespace boost::interprocess;
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Managed memory segment that allocates portions of a shared memory

View File

@@ -23,10 +23,10 @@ int main()
using namespace boost::interprocess;
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
managed_shared_memory managed_shm(create_only, "MySharedMemory", 10000*sizeof(std::size_t));

View File

@@ -13,6 +13,7 @@
#include <boost/interprocess/allocators/allocator.hpp>
#include <boost/interprocess/containers/list.hpp>
#include <cstring>
#include <boost/aligned_storage.hpp>
int main()
{
@@ -20,12 +21,13 @@ int main()
//Create the static memory who will store all objects
const int memsize = 65536;
static char static_buffer [memsize];
static boost::aligned_storage<memsize>::type static_buffer;
//This managed memory will construct objects associated with
//a wide string in the static buffer
wmanaged_external_buffer objects_in_static_memory
(create_only, static_buffer, memsize);
(create_only, &static_buffer, memsize);
//We optimize resources to create 100 named objects in the static buffer
objects_in_static_memory.reserve_named_objects(100);
@@ -50,12 +52,12 @@ int main()
//pointers and all the pointers constructed int the static memory point
//to objects in the same segment, we can create another static buffer
//from the first one and duplicate all the data.
static char static_buffer2 [memsize];
std::memcpy(static_buffer2, static_buffer, memsize);
static boost::aligned_storage<memsize>::type static_buffer2;
std::memcpy(&static_buffer2, &static_buffer, memsize);
//Now open the duplicated managed memory passing the memory as argument
wmanaged_external_buffer objects_in_static_memory2
(open_only, static_buffer2, memsize);
(open_only, &static_buffer2, memsize);
//Check that "MyList" has been duplicated in the second buffer
if(!objects_in_static_memory2.find<MyBufferList>(L"MyList").first)

View File

@@ -12,6 +12,9 @@
#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/managed_mapped_file.hpp>
#include <cassert>
//<-
#include "../test/get_process_id_name.hpp"
//->
class MyClass
{
@@ -22,15 +25,33 @@ int main()
{
using namespace boost::interprocess;
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
{
//Create a managed shared memory
//<-
#if 1
managed_shared_memory shm(create_only, test::get_process_id_name(), 1000);
#else
//->
managed_shared_memory shm(create_only, "MySharedMemory", 1000);
//<-
#endif
//->
//Check size
assert(shm.get_size() == 1000);
//Construct a named object
@@ -42,9 +63,26 @@ int main()
}
{
//Now that the segment is not mapped grow it adding extra 500 bytes
//<-
#if 1
managed_shared_memory::grow(test::get_process_id_name(), 500);
#else
//->
managed_shared_memory::grow("MySharedMemory", 500);
//<-
#endif
//->
//Map it again
//<-
#if 1
managed_shared_memory shm(open_only, test::get_process_id_name());
#else
//->
managed_shared_memory shm(open_only, "MySharedMemory");
//<-
#endif
//->
//Check size
assert(shm.get_size() == 1500);
//Check "MyClass" is still there
@@ -54,9 +92,26 @@ int main()
}
{
//Now minimize the size of the segment
//<-
#if 1
managed_shared_memory::shrink_to_fit(test::get_process_id_name());
#else
//->
managed_shared_memory::shrink_to_fit("MySharedMemory");
//<-
#endif
//->
//Map it again
//<-
#if 1
managed_shared_memory shm(open_only, test::get_process_id_name());
#else
//->
managed_shared_memory shm(open_only, "MySharedMemory");
//<-
#endif
//->
//Check size
assert(shm.get_size() < 1000);
//Check "MyClass" is still there

View File

@@ -23,10 +23,10 @@ int main()
typedef managed_shared_memory::multiallocation_chain multiallocation_chain;
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
managed_shared_memory managed_shm(create_only, "MySharedMemory", 65536);

View File

@@ -16,10 +16,10 @@ int main()
using namespace boost::interprocess;
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Managed memory segment that allocates portions of a shared memory

View File

@@ -21,10 +21,10 @@ int main ()
using namespace boost::interprocess;
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
//Shared memory front-end that is able to construct objects

View File

@@ -29,10 +29,10 @@ int main ()
typedef vector<MyShmString, StringAllocator> MyShmStringVector;
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
} remover;
managed_shared_memory shm(create_only, "MySharedMemory", 10000);

View File

@@ -17,6 +17,9 @@
#include <boost/multi_index_container.hpp>
#include <boost/multi_index/member.hpp>
#include <boost/multi_index/ordered_index.hpp>
//<-
#include "../test/get_process_id_name.hpp"
//->
using namespace boost::interprocess;
namespace bmi = boost::multi_index;
@@ -62,14 +65,31 @@ typedef bmi::multi_index_container<
int main ()
{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
//Create shared memory
//<-
#if 1
managed_shared_memory segment(create_only,test::get_process_id_name(), 65536);
#else
//->
managed_shared_memory segment(create_only,"MySharedMemory", 65536);
//<-
#endif
//->
//Construct the multi_index in shared memory
employee_set *es = segment.construct<employee_set>

View File

@@ -15,6 +15,9 @@
#include <cstddef>
#include <cassert>
#include <utility>
//<-
#include "../test/get_process_id_name.hpp"
//->
int main(int argc, char *argv[])
{
@@ -25,12 +28,29 @@ int main(int argc, char *argv[])
//Remove shared memory on construction and destruction
struct shm_remove
{
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
//Construct managed shared memory
//<-
#if 1
managed_shared_memory segment(create_only, test::get_process_id_name(), 65536);
#else
//->
managed_shared_memory segment(create_only, "MySharedMemory", 65536);
//<-
#endif
//->
//Create an object of MyType initialized to {0.0, 0}
MyType *instance = segment.construct<MyType>
@@ -55,7 +75,10 @@ int main(int argc, char *argv[])
, &int_initializer[0]); //Iterator for the 2nd ctor argument
//Launch child process
std::string s(argv[0]); s += " child";
std::string s(argv[0]); s += " child ";
//<-
s += test::get_process_id_name();
//->
if(0 != std::system(s.c_str()))
return 1;
@@ -73,7 +96,15 @@ int main(int argc, char *argv[])
}
else{
//Open managed shared memory
//<-
#if 1
managed_shared_memory segment(open_only, argv[2]);
#else
//->
managed_shared_memory segment(open_only, "MySharedMemory");
//<-
#endif
//->
std::pair<MyType*, std::size_t> res;

View File

@@ -15,15 +15,63 @@
#include <iostream>
#include <cstdio>
//<-
#include "../test/get_process_id_name.hpp"
//->
int main ()
{
using namespace boost::interprocess;
try{
//Open or create the named mutex
named_mutex mutex(open_or_create, "fstream_named_mutex");
struct file_remove
{
//<-
#if 1
file_remove() { std::remove(test::get_process_id_name()); }
~file_remove(){ std::remove(test::get_process_id_name()); }
#else
//->
file_remove() { std::remove("file_name"); }
~file_remove(){ std::remove("file_name"); }
//<-
#endif
//->
} file_remover;
struct mutex_remove
{
//<-
#if 1
mutex_remove() { named_mutex::remove(test::get_process_id_name()); }
~mutex_remove(){ named_mutex::remove(test::get_process_id_name()); }
#else
//->
mutex_remove() { named_mutex::remove("fstream_named_mutex"); }
~mutex_remove(){ named_mutex::remove("fstream_named_mutex"); }
//<-
#endif
//->
} remover;
//Open or create the named mutex
//<-
#if 1
named_mutex mutex(open_or_create, test::get_process_id_name());
#else
//->
named_mutex mutex(open_or_create, "fstream_named_mutex");
//<-
#endif
//->
//<-
#if 1
std::ofstream file(test::get_process_id_name());
#else
//->
std::ofstream file("file_name");
//<-
#endif
//->
for(int i = 0; i < 10; ++i){
@@ -37,13 +85,9 @@ int main ()
}
}
catch(interprocess_exception &ex){
named_mutex::remove("fstream_named_mutex");
std::remove("file_name");
std::cout << ex.what() << std::endl;
return 1;
}
named_mutex::remove("fstream_named_mutex");
std::remove("file_name");
return 0;
}
//]

View File

@@ -13,22 +13,44 @@
#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/allocators/node_allocator.hpp>
#include <cassert>
//<-
#include "../test/get_process_id_name.hpp"
//->
using namespace boost::interprocess;
int main ()
{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
//Create shared memory
//<-
#if 1
managed_shared_memory segment(create_only,
test::get_process_id_name(), //segment name
65536);
#else
//->
managed_shared_memory segment(create_only,
"MySharedMemory", //segment name
65536);
//<-
#endif
//->
//Create a node_allocator that allocates ints from the managed segment
//The number of chunks per segment is the default value

View File

@@ -12,6 +12,9 @@
//[doc_offset_ptr
#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/offset_ptr.hpp>
//<-
#include "../test/get_process_id_name.hpp"
//->
using namespace boost::interprocess;
@@ -25,16 +28,35 @@ struct list_node
int main ()
{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
managed_shared_memory segment(
create_only,
"MySharedMemory", //segment name
65536); //segment size in bytes
//Create shared memory
//<-
#if 1
managed_shared_memory segment(create_only,
test::get_process_id_name(), //segment name
65536);
#else
//->
managed_shared_memory segment(create_only,
"MySharedMemory", //segment name
65536);
//<-
#endif
//->
//Create linked list with 10 nodes in shared memory
offset_ptr<list_node> prev = 0, current, first;

View File

@@ -13,22 +13,44 @@
#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/allocators/private_adaptive_pool.hpp>
#include <cassert>
//<-
#include "../test/get_process_id_name.hpp"
//->
using namespace boost::interprocess;
int main ()
{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
//Create shared memory
//<-
#if 1
managed_shared_memory segment(create_only,
test::get_process_id_name(), //segment name
65536);
#else
//->
managed_shared_memory segment(create_only,
"MySharedMemory", //segment name
65536);
//<-
#endif
//->
//Create a private_adaptive_pool that allocates ints from the managed segment
//The number of chunks per segment is the default value

View File

@@ -13,22 +13,44 @@
#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/allocators/private_node_allocator.hpp>
#include <cassert>
//<-
#include "../test/get_process_id_name.hpp"
//->
using namespace boost::interprocess;
int main ()
{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
//Create shared memory
//<-
#if 1
managed_shared_memory segment(create_only,
test::get_process_id_name(), //segment name
65536);
#else
//->
managed_shared_memory segment(create_only,
"MySharedMemory", //segment name
65536);
//<-
#endif
//->
//Create a private_node_allocator that allocates ints from the managed segment
//The number of chunks per segment is the default value

View File

@@ -12,6 +12,9 @@
//[doc_scoped_ptr
#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/smart_ptr/scoped_ptr.hpp>
//<-
#include "../test/get_process_id_name.hpp"
//->
using namespace boost::interprocess;
@@ -48,13 +51,30 @@ int main ()
{
//Create shared memory
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
//<-
#if 1
managed_shared_memory shmem(create_only, test::get_process_id_name(), 10000);
#else
//->
managed_shared_memory shmem(create_only, "MySharedMemory", 10000);
//<-
#endif
//->
//In the first try, there will be no exceptions
//in the second try we will throw an exception

View File

@@ -14,6 +14,9 @@
#include <cstring>
#include <cstdlib>
#include <string>
//<-
#include "../test/get_process_id_name.hpp"
//->
int main(int argc, char *argv[])
{
@@ -23,12 +26,29 @@ int main(int argc, char *argv[])
//Remove shared memory on construction and destruction
struct shm_remove
{
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
//Create a shared memory object.
//<-
#if 1
shared_memory_object shm (create_only, test::get_process_id_name(), read_write);
#else
//->
shared_memory_object shm (create_only, "MySharedMemory", read_write);
//<-
#endif
//->
//Set size
shm.truncate(1000);
@@ -40,13 +60,24 @@ int main(int argc, char *argv[])
std::memset(region.get_address(), 1, region.get_size());
//Launch child process
std::string s(argv[0]); s += " child";
std::string s(argv[0]); s += " child ";
//<-
s += test::get_process_id_name();
//->
if(0 != std::system(s.c_str()))
return 1;
}
else{
//Open already created shared memory object.
//<-
#if 1
shared_memory_object shm (open_only, argv[2], read_only);
#else
//->
shared_memory_object shm (open_only, "MySharedMemory", read_only);
//<-
#endif
//->
//Map the whole shared memory in this process
mapped_region region(shm, read_only);

View File

@@ -16,6 +16,9 @@
#include <boost/interprocess/smart_ptr/shared_ptr.hpp>
#include <boost/interprocess/smart_ptr/weak_ptr.hpp>
#include <cassert>
//<-
#include "../test/get_process_id_name.hpp"
//->
using namespace boost::interprocess;
@@ -46,9 +49,30 @@ struct shared_ptr_owner
int main ()
{
//Destroy any previous file with the name to be used.
file_mapping::remove("MyMappedFile");
struct file_remove
{
//<-
#if 1
file_remove() { file_mapping::remove(test::get_process_id_name()); }
~file_remove(){ file_mapping::remove(test::get_process_id_name()); }
#else
//->
file_remove() { file_mapping::remove("MyMappedFile"); }
~file_remove(){ file_mapping::remove("MyMappedFile"); }
//<-
#endif
//->
} remover;
{
//<-
#if 1
managed_mapped_file file(create_only, test::get_process_id_name(), 4096);
#else
//->
managed_mapped_file file(create_only, "MyMappedFile", 4096);
//<-
#endif
//->
//Construct the shared type in the file and
//pass ownership to this local shared pointer
@@ -77,7 +101,16 @@ int main ()
}
{
//Reopen the mapped file and find again all owners
//<-
#if 1
managed_mapped_file file(open_only, test::get_process_id_name());
#else
//->
managed_mapped_file file(open_only, "MyMappedFile");
//<-
#endif
//->
shared_ptr_owner *owner1 = file.find<shared_ptr_owner>("owner1").first;
shared_ptr_owner *owner2 = file.find<shared_ptr_owner>("owner2").first;
assert(owner1 && owner2);
@@ -113,7 +146,6 @@ int main ()
//The reference count will be deallocated when all weak pointers
//disappear. After that, the file is unmapped.
}
file_mapping::remove("MyMappedFile");
return 0;
}
//]

View File

@@ -17,6 +17,9 @@
#include <boost/interprocess/allocators/allocator.hpp>
#include <boost/interprocess/smart_ptr/deleter.hpp>
#include <cassert>
//<-
#include "../test/get_process_id_name.hpp"
//->
using namespace boost::interprocess;
@@ -32,13 +35,30 @@ typedef shared_ptr<MyType, void_allocator_type, deleter_type> my_shared_ptr;
int main ()
{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
//<-
#if 1
managed_shared_memory segment(create_only, test::get_process_id_name(), 4096);
#else
//->
managed_shared_memory segment(create_only, "MySharedMemory", 4096);
//<-
#endif
//->
//Create a shared pointer in shared memory
//pointing to a newly created object in the segment

View File

@@ -15,6 +15,9 @@
#include <boost/interprocess/allocators/allocator.hpp>
#include <string>
#include <cstdlib> //std::system
//<-
#include "../test/get_process_id_name.hpp"
//->
using namespace boost::interprocess;
@@ -33,12 +36,29 @@ int main(int argc, char *argv[])
//Remove shared memory on construction and destruction
struct shm_remove
{
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
//Create a new segment with given name and size
managed_shared_memory segment(create_only ,"MySharedMemory", 65536);
//<-
#if 1
managed_shared_memory segment(create_only, test::get_process_id_name(), 65536);
#else
//->
managed_shared_memory segment(create_only, "MySharedMemory", 65536);
//<-
#endif
//->
//Initialize shared memory STL-compatible allocator
const ShmemAllocator alloc_inst (segment.get_segment_manager());
@@ -50,7 +70,10 @@ int main(int argc, char *argv[])
myvector->push_back(i);
//Launch child process
std::string s(argv[0]); s += " child";
std::string s(argv[0]); s += " child ";
//<-
s += test::get_process_id_name();
//->
if(0 != std::system(s.c_str()))
return 1;
@@ -60,7 +83,15 @@ int main(int argc, char *argv[])
}
else{ //Child process
//Open the managed segment
//<-
#if 1
managed_shared_memory segment(open_only, argv[2]);
#else
//->
managed_shared_memory segment(open_only, "MySharedMemory");
//<-
#endif
//->
//Find the vector using the c-string name
MyVector *myvector = segment.find<MyVector>("MyVector").first;

View File

@@ -18,6 +18,9 @@
#include <boost/interprocess/containers/list.hpp>
#include <boost/interprocess/allocators/allocator.hpp>
#include <cassert>
//<-
#include "../test/get_process_id_name.hpp"
//->
using namespace boost::interprocess;
@@ -48,9 +51,30 @@ typedef list
int main ()
{
//Destroy any previous file with the name to be used.
file_mapping::remove("MyMappedFile");
struct file_remove
{
//<-
#if 1
file_remove() { file_mapping::remove(test::get_process_id_name()); }
~file_remove(){ file_mapping::remove(test::get_process_id_name()); }
#else
//->
file_remove() { file_mapping::remove("MyMappedFile"); }
~file_remove(){ file_mapping::remove("MyMappedFile"); }
//<-
#endif
//->
} remover;
{
//<-
#if 1
managed_mapped_file file(create_only, test::get_process_id_name(), 65536);
#else
//->
managed_mapped_file file(create_only, "MyMappedFile", 65536);
//<-
#endif
//->
//Construct an object in the file and
//pass ownership to this local unique pointer
@@ -98,7 +122,16 @@ int main ()
}
{
//Reopen the mapped file and find again the list
//<-
#if 1
managed_mapped_file file(open_only, test::get_process_id_name());
#else
//->
managed_mapped_file file(open_only, "MyMappedFile");
//<-
#endif
//->
unique_ptr_list_t *unique_list =
file.find<unique_ptr_list_t>("unique list").first;
assert(unique_list);
@@ -112,7 +145,6 @@ int main ()
//Now destroy the list. All elements will be automatically deallocated.
file.destroy_ptr(unique_list);
}
file_mapping::remove("MyMappedFile");
return 0;
}
//]

View File

@@ -16,19 +16,39 @@
#include <boost/unordered_map.hpp> //boost::unordered_map
#include <functional> //std::equal_to
#include <boost/functional/hash.hpp> //boost::hash
//<-
#include "../test/get_process_id_name.hpp"
//->
int main ()
{
using namespace boost::interprocess;
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
//Create shared memory
managed_shared_memory segment(create_only ,"MySharedMemory" ,65536);
//<-
#if 1
managed_shared_memory segment(create_only, test::get_process_id_name(), 65536);
#else
//->
managed_shared_memory segment(create_only, "MySharedMemory", 65536);
//<-
#endif
//->
//Note that unordered_map<Key, MappedType>'s value_type is std::pair<const Key, MappedType>,
//so the allocator must allocate that pair.

View File

@@ -16,6 +16,9 @@
#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/streams/vectorstream.hpp>
#include <iterator>
//<-
#include "../test/get_process_id_name.hpp"
//->
using namespace boost::interprocess;
@@ -31,16 +34,36 @@ typedef basic_vectorstream<MyString> MyVectorStream;
int main ()
{
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
//<-
#if 1
managed_shared_memory segment(
create_only,
test::get_process_id_name(), //segment name
65536); //segment size in bytes
#else
//->
managed_shared_memory segment(
create_only,
"MySharedMemory", //segment name
65536); //segment size in bytes
//<-
#endif
//->
//Construct shared memory vector
MyVector *myvector =

View File

@@ -14,6 +14,9 @@
#include <boost/interprocess/containers/vector.hpp>
#include <boost/interprocess/containers/string.hpp>
#include <boost/interprocess/allocators/allocator.hpp>
//<-
#include "../test/get_process_id_name.hpp"
//->
int main ()
{
@@ -30,13 +33,30 @@ int main ()
//Open shared memory
//Remove shared memory on construction and destruction
struct shm_destroy
struct shm_remove
{
shm_destroy() { shared_memory_object::remove("MySharedMemory"); }
~shm_destroy(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#if 1
shm_remove() { shared_memory_object::remove(test::get_process_id_name()); }
~shm_remove(){ shared_memory_object::remove(test::get_process_id_name()); }
#else
//->
shm_remove() { shared_memory_object::remove("MySharedMemory"); }
~shm_remove(){ shared_memory_object::remove("MySharedMemory"); }
//<-
#endif
//->
} remover;
//<-
#if 1
managed_shared_memory shm(create_only, test::get_process_id_name(), 10000);
#else
//->
managed_shared_memory shm(create_only, "MySharedMemory", 10000);
//<-
#endif
//->
//Create allocators
CharAllocator charallocator (shm.get_segment_manager());

View File

@@ -24,7 +24,15 @@ int main(int argc, char *argv[])
if(argc == 1){ //Parent process
//Create a native windows shared memory object.
//<-
#if 1
windows_shared_memory shm (create_only, test::get_process_id_name(), read_write, 1000);
#else
//->
windows_shared_memory shm (create_only, "MySharedMemory", read_write, 1000);
//<-
#endif
//->
//Map the whole shared memory in this process
mapped_region region(shm, read_write);
@@ -33,14 +41,25 @@ int main(int argc, char *argv[])
std::memset(region.get_address(), 1, region.get_size());
//Launch child process
std::string s(argv[0]); s += " child";
std::string s(argv[0]); s += " child ";
//<-
s += test::get_process_id_name();
//->
if(0 != std::system(s.c_str()))
return 1;
//windows_shared_memory is destroyed when the last attached process dies...
}
else{
//Open already created shared memory object.
//<-
#if 1
windows_shared_memory shm (open_only, test::get_process_id_name(), read_only);
#else
//->
windows_shared_memory shm (open_only, "MySharedMemory", read_only);
//<-
#endif
//->
//Map the whole shared memory in this process
mapped_region region(shm, read_only);

View File

@@ -1,136 +1,4 @@
Microsoft Visual Studio Solution File, Format Version 8.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_memory_mapping_test", "shared_memory_mappable_test.vcproj", "{5CE18C83-6025-36FE-A4F7-BA09176D3A11}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_memory_test", "shared_memory_test.vcproj", "{5E2838CC-0916-8F4E-A4F7-93506BA0D310}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_ptr_test", "shared_ptr_test.vcproj", "{5371C383-6092-1238-A877-BAEB37867609}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "slist_test", "slist_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792608}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "string_test", "string_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D4A792607}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tree_test", "tree_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792606}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "upgradable_mutex_test", "upgradable_mutex.vcproj", "{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "user_buffer_test", "user_buffer_test.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792603}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vectorstream_test", "vectorstream_test.vcproj", "{58CCE183-6032-12FE-A4F7-BA893A767601}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vector_test", "vector_test.vcproj", "{5CE11C83-096A-84FE-4FA2-D3A6BA792002}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_condition_test", "named_condition_test.vcproj", "{58CC2563-6092-48FE-FAF7-BA046A792658}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexA", "doc_anonymous_mutexA.vcproj", "{58C1B183-9026-4E63-12F2-005412200054}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_mutexB", "doc_anonymous_mutexB.vcproj", "{58C1B183-9026-4E63-12F2-005202441254}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_mutex", "doc_named_mutex.vcproj", "{58C181B3-9516-463E-2F12-122155400054}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionA", "doc_anonymous_conditionA.vcproj", "{5C1B8183-0296-4F83-1F22-001005220544}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_conditionB", "doc_anonymous_conditionB.vcproj", "{58C1FE83-2906-E643-2F12-024410052254}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_conditionA", "doc_named_conditionA.vcproj", "{58EB1CB3-1354-364E-12F2-154356612054}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_named_conditionB", "doc_named_conditionB.vcproj", "{58181CB3-5134-634E-12F2-155435622054}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreA", "doc_anonymous_semaphoreA.vcproj", "{5CB81183-29FB-F843-24FF-022050100544}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_semaphoreB", "doc_anonymous_semaphoreB.vcproj", "{58FBE8C3-9026-FAB2-E643-000522441254}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "named_upgradable_mutex_test", "named_upgradable_mutex.vcproj", "{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexA", "doc_anonymous_upgradable_mutexA.vcproj", "{5C18831B-F162-FA96-E6C3-FA5122040054}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_anonymous_upgradable_mutexB", "doc_anonymous_upgradable_mutexB.vcproj", "{5C1B1043-1EFF-2793-4E63-245241283054}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueA", "doc_message_queueA.vcproj", "{51B189C3-4E63-9026-12F2-12200AF54054}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_message_queueB", "doc_message_queueB.vcproj", "{5C1B1813-12C2-0296-4E63-244549126520}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cont", "doc_cont.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792653}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unique_ptr_test", "unique_ptr_test.vcproj", "{571C3383-6092-A877-1238-B3786BAE7605}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_move_containers", "doc_move_containers.vcproj", "{58C1B183-0296-EA42-EF04-005120054104}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "map_index_allocation_test", "map_index_allocation_test.vcproj", "{588CCD13-2962-83FE-F4B7-92230DB73629}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_map_index_allocation_test", "flat_map_index_allocation_test.vcproj", "{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iset_index_allocation_test", "iset_index_allocation_test.vcproj", "{58BD1CC3-6972-F3F7-84BE-0DB736035922}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iunordered_set_index_allocation_test", "iunordered_set_index_allocation_test.vcproj", "{5BD1C7C3-3F7F-6972-84BE-B731D9236035}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_file_mapping", "doc_file_mapping.vcproj", "{58DE18C3-3261-2F3E-FD47-83760B9FA761}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_map", "doc_map.vcproj", "{59CEC183-8192-8F6D-4FB7-BA260A79D352}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
@@ -451,138 +319,6 @@ Global
GlobalSection(ProjectDependencies) = postSolution
EndGlobalSection
GlobalSection(ProjectConfiguration) = postSolution
{5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.ActiveCfg = Debug|Win32
{5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Debug.Build.0 = Debug|Win32
{5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Release.ActiveCfg = Release|Win32
{5CE18C83-6025-36FE-A4F7-BA09176D3A11}.Release.Build.0 = Release|Win32
{5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Debug.ActiveCfg = Debug|Win32
{5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Debug.Build.0 = Debug|Win32
{5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Release.ActiveCfg = Release|Win32
{5E2838CC-0916-8F4E-A4F7-93506BA0D310}.Release.Build.0 = Release|Win32
{5371C383-6092-1238-A877-BAEB37867609}.Debug.ActiveCfg = Debug|Win32
{5371C383-6092-1238-A877-BAEB37867609}.Debug.Build.0 = Debug|Win32
{5371C383-6092-1238-A877-BAEB37867609}.Release.ActiveCfg = Release|Win32
{5371C383-6092-1238-A877-BAEB37867609}.Release.Build.0 = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.ActiveCfg = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792608}.Debug.Build.0 = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.ActiveCfg = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792608}.Release.Build.0 = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.ActiveCfg = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D4A792607}.Debug.Build.0 = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.ActiveCfg = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D4A792607}.Release.Build.0 = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792606}.Debug.ActiveCfg = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792606}.Debug.Build.0 = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.ActiveCfg = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792606}.Release.Build.0 = Release|Win32
{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Debug.ActiveCfg = Debug|Win32
{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Debug.Build.0 = Debug|Win32
{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Release.ActiveCfg = Release|Win32
{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}.Release.Build.0 = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792603}.Debug.ActiveCfg = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792603}.Debug.Build.0 = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792603}.Release.ActiveCfg = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792603}.Release.Build.0 = Release|Win32
{58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.ActiveCfg = Debug|Win32
{58CCE183-6032-12FE-A4F7-BA893A767601}.Debug.Build.0 = Debug|Win32
{58CCE183-6032-12FE-A4F7-BA893A767601}.Release.ActiveCfg = Release|Win32
{58CCE183-6032-12FE-A4F7-BA893A767601}.Release.Build.0 = Release|Win32
{5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.ActiveCfg = Debug|Win32
{5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Debug.Build.0 = Debug|Win32
{5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.ActiveCfg = Release|Win32
{5CE11C83-096A-84FE-4FA2-D3A6BA792002}.Release.Build.0 = Release|Win32
{58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.ActiveCfg = Debug|Win32
{58CC2563-6092-48FE-FAF7-BA046A792658}.Debug.Build.0 = Debug|Win32
{58CC2563-6092-48FE-FAF7-BA046A792658}.Release.ActiveCfg = Release|Win32
{58CC2563-6092-48FE-FAF7-BA046A792658}.Release.Build.0 = Release|Win32
{58C1B183-9026-4E63-12F2-005412200054}.Debug.ActiveCfg = Debug|Win32
{58C1B183-9026-4E63-12F2-005412200054}.Debug.Build.0 = Debug|Win32
{58C1B183-9026-4E63-12F2-005412200054}.Release.ActiveCfg = Release|Win32
{58C1B183-9026-4E63-12F2-005412200054}.Release.Build.0 = Release|Win32
{58C1B183-9026-4E63-12F2-005202441254}.Debug.ActiveCfg = Debug|Win32
{58C1B183-9026-4E63-12F2-005202441254}.Debug.Build.0 = Debug|Win32
{58C1B183-9026-4E63-12F2-005202441254}.Release.ActiveCfg = Release|Win32
{58C1B183-9026-4E63-12F2-005202441254}.Release.Build.0 = Release|Win32
{58C181B3-9516-463E-2F12-122155400054}.Debug.ActiveCfg = Debug|Win32
{58C181B3-9516-463E-2F12-122155400054}.Debug.Build.0 = Debug|Win32
{58C181B3-9516-463E-2F12-122155400054}.Release.ActiveCfg = Release|Win32
{58C181B3-9516-463E-2F12-122155400054}.Release.Build.0 = Release|Win32
{5C1B8183-0296-4F83-1F22-001005220544}.Debug.ActiveCfg = Debug|Win32
{5C1B8183-0296-4F83-1F22-001005220544}.Debug.Build.0 = Debug|Win32
{5C1B8183-0296-4F83-1F22-001005220544}.Release.ActiveCfg = Release|Win32
{5C1B8183-0296-4F83-1F22-001005220544}.Release.Build.0 = Release|Win32
{58C1FE83-2906-E643-2F12-024410052254}.Debug.ActiveCfg = Debug|Win32
{58C1FE83-2906-E643-2F12-024410052254}.Debug.Build.0 = Debug|Win32
{58C1FE83-2906-E643-2F12-024410052254}.Release.ActiveCfg = Release|Win32
{58C1FE83-2906-E643-2F12-024410052254}.Release.Build.0 = Release|Win32
{58EB1CB3-1354-364E-12F2-154356612054}.Debug.ActiveCfg = Debug|Win32
{58EB1CB3-1354-364E-12F2-154356612054}.Debug.Build.0 = Debug|Win32
{58EB1CB3-1354-364E-12F2-154356612054}.Release.ActiveCfg = Release|Win32
{58EB1CB3-1354-364E-12F2-154356612054}.Release.Build.0 = Release|Win32
{58181CB3-5134-634E-12F2-155435622054}.Debug.ActiveCfg = Debug|Win32
{58181CB3-5134-634E-12F2-155435622054}.Debug.Build.0 = Debug|Win32
{58181CB3-5134-634E-12F2-155435622054}.Release.ActiveCfg = Release|Win32
{58181CB3-5134-634E-12F2-155435622054}.Release.Build.0 = Release|Win32
{5CB81183-29FB-F843-24FF-022050100544}.Debug.ActiveCfg = Debug|Win32
{5CB81183-29FB-F843-24FF-022050100544}.Debug.Build.0 = Debug|Win32
{5CB81183-29FB-F843-24FF-022050100544}.Release.ActiveCfg = Release|Win32
{5CB81183-29FB-F843-24FF-022050100544}.Release.Build.0 = Release|Win32
{58FBE8C3-9026-FAB2-E643-000522441254}.Debug.ActiveCfg = Debug|Win32
{58FBE8C3-9026-FAB2-E643-000522441254}.Debug.Build.0 = Debug|Win32
{58FBE8C3-9026-FAB2-E643-000522441254}.Release.ActiveCfg = Release|Win32
{58FBE8C3-9026-FAB2-E643-000522441254}.Release.Build.0 = Release|Win32
{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.ActiveCfg = Debug|Win32
{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Debug.Build.0 = Debug|Win32
{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.ActiveCfg = Release|Win32
{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}.Release.Build.0 = Release|Win32
{5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.ActiveCfg = Debug|Win32
{5C18831B-F162-FA96-E6C3-FA5122040054}.Debug.Build.0 = Debug|Win32
{5C18831B-F162-FA96-E6C3-FA5122040054}.Release.ActiveCfg = Release|Win32
{5C18831B-F162-FA96-E6C3-FA5122040054}.Release.Build.0 = Release|Win32
{5C1B1043-1EFF-2793-4E63-245241283054}.Debug.ActiveCfg = Debug|Win32
{5C1B1043-1EFF-2793-4E63-245241283054}.Debug.Build.0 = Debug|Win32
{5C1B1043-1EFF-2793-4E63-245241283054}.Release.ActiveCfg = Release|Win32
{5C1B1043-1EFF-2793-4E63-245241283054}.Release.Build.0 = Release|Win32
{51B189C3-4E63-9026-12F2-12200AF54054}.Debug.ActiveCfg = Debug|Win32
{51B189C3-4E63-9026-12F2-12200AF54054}.Debug.Build.0 = Debug|Win32
{51B189C3-4E63-9026-12F2-12200AF54054}.Release.ActiveCfg = Release|Win32
{51B189C3-4E63-9026-12F2-12200AF54054}.Release.Build.0 = Release|Win32
{5C1B1813-12C2-0296-4E63-244549126520}.Debug.ActiveCfg = Debug|Win32
{5C1B1813-12C2-0296-4E63-244549126520}.Debug.Build.0 = Debug|Win32
{5C1B1813-12C2-0296-4E63-244549126520}.Release.ActiveCfg = Release|Win32
{5C1B1813-12C2-0296-4E63-244549126520}.Release.Build.0 = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792653}.Debug.ActiveCfg = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792653}.Debug.Build.0 = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792653}.Release.ActiveCfg = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792653}.Release.Build.0 = Release|Win32
{571C3383-6092-A877-1238-B3786BAE7605}.Debug.ActiveCfg = Debug|Win32
{571C3383-6092-A877-1238-B3786BAE7605}.Debug.Build.0 = Debug|Win32
{571C3383-6092-A877-1238-B3786BAE7605}.Release.ActiveCfg = Release|Win32
{571C3383-6092-A877-1238-B3786BAE7605}.Release.Build.0 = Release|Win32
{58C1B183-0296-EA42-EF04-005120054104}.Debug.ActiveCfg = Debug|Win32
{58C1B183-0296-EA42-EF04-005120054104}.Debug.Build.0 = Debug|Win32
{58C1B183-0296-EA42-EF04-005120054104}.Release.ActiveCfg = Release|Win32
{58C1B183-0296-EA42-EF04-005120054104}.Release.Build.0 = Release|Win32
{588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.ActiveCfg = Debug|Win32
{588CCD13-2962-83FE-F4B7-92230DB73629}.Debug.Build.0 = Debug|Win32
{588CCD13-2962-83FE-F4B7-92230DB73629}.Release.ActiveCfg = Release|Win32
{588CCD13-2962-83FE-F4B7-92230DB73629}.Release.Build.0 = Release|Win32
{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.ActiveCfg = Debug|Win32
{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Debug.Build.0 = Debug|Win32
{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.ActiveCfg = Release|Win32
{51D8E9C3-2D65-48FE-3AA7-7922C0E36329}.Release.Build.0 = Release|Win32
{58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.ActiveCfg = Debug|Win32
{58BD1CC3-6972-F3F7-84BE-0DB736035922}.Debug.Build.0 = Debug|Win32
{58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.ActiveCfg = Release|Win32
{58BD1CC3-6972-F3F7-84BE-0DB736035922}.Release.Build.0 = Release|Win32
{5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Debug.ActiveCfg = Debug|Win32
{5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Debug.Build.0 = Debug|Win32
{5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Release.ActiveCfg = Release|Win32
{5BD1C7C3-3F7F-6972-84BE-B731D9236035}.Release.Build.0 = Release|Win32
{58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.ActiveCfg = Debug|Win32
{58DE18C3-3261-2F3E-FD47-83760B9FA761}.Debug.Build.0 = Debug|Win32
{58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.ActiveCfg = Release|Win32
{58DE18C3-3261-2F3E-FD47-83760B9FA761}.Release.Build.0 = Release|Win32
{59CEC183-8192-8F6D-4FB7-BA260A79D352}.Debug.ActiveCfg = Debug|Win32
{59CEC183-8192-8F6D-4FB7-BA260A79D352}.Debug.Build.0 = Debug|Win32
{59CEC183-8192-8F6D-4FB7-BA260A79D352}.Release.ActiveCfg = Release|Win32