First complete documentation version

[SVN r34819]
This commit is contained in:
Ion Gaztañaga
2006-08-04 19:54:15 +00:00
parent 50688c3798
commit 550a9de8c5
76 changed files with 3480 additions and 1611 deletions

View File

@@ -7,6 +7,7 @@
// See http://www.boost.org/libs/interprocess for documentation.
//
//////////////////////////////////////////////////////////////////////////////
#include <boost/interprocess/detail/config_begin.hpp>
#include <boost/interprocess/detail/workaround.hpp>
@@ -17,7 +18,7 @@ int main ()
{
using namespace boost::interprocess;
managed_shared_memory::remove("MySharedMemory");
shared_memory_object::remove("MySharedMemory");
//Create managed shared memory
managed_shared_memory segment(create_only,
@@ -25,7 +26,7 @@ int main ()
65536); //segment size in bytes;
//Allocate a portion of the segment
void * shptr = segment.allocate(1024/*bytes to allocate*/);
void * shptr = segment.allocate(1024);
managed_shared_memory::handle_t handle = segment.get_handle_from_address(shptr);
(void)handle;
@@ -62,4 +63,3 @@ int main ()
}
#include <boost/interprocess/detail/config_end.hpp>

View File

@@ -20,7 +20,7 @@ int main ()
//Named allocate capable shared mem allocator
//Create shared memory
managed_shared_memory::remove("MySharedMemory");
shared_memory_object::remove("MySharedMemory");
managed_shared_memory segment
(create_only,
"MySharedMemory",//segment name

View File

@@ -7,6 +7,7 @@
// See http://www.boost.org/libs/interprocess for documentation.
//
//////////////////////////////////////////////////////////////////////////////
#include <boost/interprocess/detail/config_begin.hpp>
#include <boost/interprocess/detail/workaround.hpp>
@@ -17,7 +18,7 @@ int main ()
{
using namespace boost::interprocess;
managed_shared_memory::remove("MySharedMemory");
shared_memory_object::remove("MySharedMemory");
//Create managed shared memory
managed_shared_memory segment(create_only,
@@ -25,7 +26,7 @@ int main ()
65536); //segment size in bytes;
//Allocate a portion of the segment
void * shptr = segment.allocate(1024/*bytes to allocate*/);
void * shptr = segment.allocate(1024);
managed_shared_memory::handle_t handle = segment.get_handle_from_address(shptr);
(void)handle;
@@ -62,4 +63,3 @@ int main ()
}
#include <boost/interprocess/detail/config_end.hpp>

View File

@@ -20,7 +20,7 @@ int main ()
//Named allocate capable shared mem allocator
//Create shared memory
managed_shared_memory::remove("MySharedMemory");
shared_memory_object::remove("MySharedMemory");
managed_shared_memory segment
(create_only,
"MySharedMemory",//segment name

View File

@@ -25,13 +25,13 @@ createdir:
@mkdir -p ../../bin/linux
../../bin/linux/test_%.out: ../../test/%.cpp
$(CC) $< -Wall -g -pthread -DBOOST_DATE_TIME_NO_LIB -lstdc++ -lrt -lboost_thread-gcc-mt -I$(BOOST_ROOT) -L$(BOOST_LIBS) -o $@
$(CC) $< -Wall -pedantic -g -pthread -DBOOST_DATE_TIME_NO_LIB -lstdc++ -lrt -lboost_thread-gcc-mt -I$(BOOST_ROOT) -L$(BOOST_LIBS) -o $@
../../bin/linux/ex_%.out: ../../example/%.cpp
$(CC) $< -Wall -g -pthread -DBOOST_DATE_TIME_NO_LIB -lstdc++ -lrt -lboost_thread-gcc-mt -I$(BOOST_ROOT) -L$(BOOST_LIBS) -o $@
$(CC) $< -Wall -pedantic -g -pthread -DBOOST_DATE_TIME_NO_LIB -lstdc++ -lrt -lboost_thread-gcc-mt -I$(BOOST_ROOT) -L$(BOOST_LIBS) -o $@
../../bin/linux/doc_%.out: ../../doc/code/%.cpp
$(CC) $< -Wall -g -pthread -DBOOST_DATE_TIME_NO_LIB -lstdc++ -lrt -lboost_thread-gcc-mt -I$(BOOST_ROOT) -L$(BOOST_LIBS) -o $@
$(CC) $< -Wall -pedantic -g -pthread -DBOOST_DATE_TIME_NO_LIB -lstdc++ -lrt -lboost_thread-gcc-mt -I$(BOOST_ROOT) -L$(BOOST_LIBS) -o $@
clean:
rm -f *.o

View File

@@ -12,7 +12,7 @@ INTERPROCESSTEST_CPP := $(wildcard ../../test/*.cpp)
INTERPROCESSTEST_OUT := $(patsubst ../../test/%.cpp, ../../bin/mingw/test_%.out, $(INTERPROCESSTEST_CPP))
INTERPROCESSEXAMPLE_CPP := $(wildcard ../../example/*.cpp)
INTERPROCESSEXAMPLE_OUT := $(patsubst ../../example/%.cpp, ../../bin/mingw/doc_%.out, $(INTERPROCESSEXAMPLE_CPP))
INTERPROCESSEXAMPLE_OUT := $(patsubst ../../example/%.cpp, ../../bin/mingw/ex_%.out, $(INTERPROCESSEXAMPLE_CPP))
INTERPROCESSDOC_CPP := $(wildcard ../../doc/code/*.cpp)
INTERPROCESSDOC_OUT := $(patsubst ../../doc/code/%.cpp, ../../bin/mingw/doc_%.out, $(INTERPROCESSDOC_CPP))
@@ -21,20 +21,20 @@ LIBDIR:= ../../../../stage/lib
.PHONY: createdir clean
all: createdir $(INTERPROCESSEXAMPLE_OUT) $(INTERPROCESSTEST_OUT)
all: createdir $(INTERPROCESSEXAMPLE_OUT) $(INTERPROCESSTEST_OUT) $(INTERPROCESSDOC_OUT)
@cd .
createdir:
@mkdir -p ../../bin/mingw
../../bin/mingw/test_%.out: ../../test/%.cpp
$(CC) $< -Wall -DBOOST_DATE_TIME_NO_LIB -L$(LIBDIR) -lboost_thread-gcc-mt -I$(BOOST_ROOT) -lstdc++ -o $@
$(CC) $< -Wall -DBOOST_DATE_TIME_NO_LIB -L$(LIBDIR) -lboost_thread-mgw-mt -I$(BOOST_ROOT) -lstdc++ -o $@
../../bin/mingw/ex_%.out: ../../example/%.cpp
$(CC) $< -Wall -DBOOST_DATE_TIME_NO_LIB -L$(LIBDIR)-lboost_thread-gcc-mt -I$(BOOST_ROOT) -lstdc++ -o $@
$(CC) $< -Wall -DBOOST_DATE_TIME_NO_LIB -L$(LIBDIR)-lboost_thread-mgw-mt -I$(BOOST_ROOT) -lstdc++ -o $@
../../bin/mingw/doc_%.out: ../../example/%.cpp
$(CC) $< -Wall -DBOOST_DATE_TIME_NO_LIB -L$(LIBDIR)-lboost_thread-gcc-mt -I$(BOOST_ROOT) -lstdc++ -o $@
../../bin/mingw/doc_%.out: ../../doc/code/%.cpp
$(CC) $< -Wall -DBOOST_DATE_TIME_NO_LIB -L$(LIBDIR)-lboost_thread-mgw-mt -I$(BOOST_ROOT) -lstdc++ -o $@
clean:
rm -f *.o

View File

@@ -12,27 +12,27 @@ INTERPROCESSTEST_CPP := $(wildcard ../../test/*.cpp)
INTERPROCESSTEST_OUT := $(patsubst ../../test/%.cpp, ../../bin/qnx/test_%.out, $(INTERPROCESSTEST_CPP))
INTERPROCESSEXAMPLE_CPP := $(wildcard ../../example/*.cpp)
INTERPROCESSEXAMPLE_OUT := $(patsubst ../../example/%.cpp, ../../bin/qnx/doc_%.out, $(INTERPROCESSEXAMPLE_CPP))
INTERPROCESSEXAMPLE_OUT := $(patsubst ../../example/%.cpp, ../../bin/qnx/ex_%.out, $(INTERPROCESSEXAMPLE_CPP))
INTERPROCESSDOC_CPP := $(wildcard ../../doc/code/*.cpp)
INTERPROCESSDOC_OUT := $(patsubst ../../doc/code/%.cpp, ../../bin/qnx/doc_%.out, $(INTERPROCESSDOC_CPP))
.PHONY: createdir clean
all: createdir $(INTERPROCESSEXAMPLE_OUT) $(INTERPROCESSTEST_OUT)
all: createdir $(INTERPROCESSEXAMPLE_OUT) $(INTERPROCESSTEST_OUT) $(INTERPROCESSDOC_OUT)
@cd .
createdir:
@mkdir -p ../../bin/qnx
../../bin/qnx/test_%.out: ../../test/%.cpp
$(CC) $< -Wall -DBOOST_DATE_TIME_NO_LIB -lboost_thread-gcc-mt-s -I$(BOOST_ROOT) -o $@
$(CC) $< -Wall -pedantic -DBOOST_DATE_TIME_NO_LIB -lboost_thread-gcc-mt-s -I$(BOOST_ROOT) -o $@
../../bin/qnx/ex_%.out: ../../example/%.cpp
$(CC) $< -Wall -DBOOST_DATE_TIME_NO_LIB -lboost_thread-gcc-mt-s -I$(BOOST_ROOT) -o $@
$(CC) $< -Wall -pedantic -DBOOST_DATE_TIME_NO_LIB -lboost_thread-gcc-mt-s -I$(BOOST_ROOT) -o $@
../../bin/qnx/doc_%.out: ../../example/%.cpp
$(CC) $< -Wall -DBOOST_DATE_TIME_NO_LIB -lboost_thread-gcc-mt-s -I$(BOOST_ROOT) -o $@
../../bin/qnx/doc_%.out: ../../doc/code/%.cpp
$(CC) $< -Wall -pedantic -DBOOST_DATE_TIME_NO_LIB -lboost_thread-gcc-mt-s -I$(BOOST_ROOT) -o $@
clean:
rm -f *.o

View File

@@ -35,18 +35,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_bufferstream", "doc_buf
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}") = "doc_cont_mapA", "doc_cont_mapA.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792652}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_cont_mapB", "doc_cont_mapB.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792651}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_intrusive", "doc_intrusive.vcproj", "{5E18CC83-6092-48FE-A677-B832A0D3A650}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
@@ -103,10 +91,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "flat_tree_test", "flat_tree
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "hash_table_test", "hash_table_ex.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792636}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "_interprocesslib", "interprocesslib.vcproj", "{FFAA56F1-32EC-4B22-B6BD-95A311A67C35}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
@@ -195,7 +179,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "semaphore_test", "semaphore
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shared_memory_mapping_test", "shared_memory_mapping_test.vcproj", "{5CE18C83-6025-36FE-A4F7-BA09176D3A11}"
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
@@ -219,10 +203,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tree_test", "tree_test.vcpr
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}") = "upgradable_mutex_test", "upgradable_mutex.vcproj", "{4E88C1C2-0961-F7A4-F48E-A6A7D3B06004}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
@@ -239,6 +219,86 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "vector_test", "vector_test.
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}") = "doc_contA", "doc_contA.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792652}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_contB", "doc_contB.vcproj", "{58CCE183-6092-48FE-A4F7-BA0D3A792651}"
ProjectSection(ProjectDependencies) = postProject
EndProjectSection
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doc_shared_memory", "doc_shared_memory.vcproj", "{58CCE183-6032-12FE-4FC7-83A79F760B61}"
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
Global
GlobalSection(SolutionConfiguration) = preSolution
Debug = Debug
@@ -281,18 +341,6 @@ Global
{58C1B183-9026-4E12-00F2-001200540054}.Debug.Build.0 = Debug|Win32
{58C1B183-9026-4E12-00F2-001200540054}.Release.ActiveCfg = Release|Win32
{58C1B183-9026-4E12-00F2-001200540054}.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
{58CCE183-6092-48FE-A4F7-BA0D3A792652}.Debug.ActiveCfg = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792652}.Debug.Build.0 = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792652}.Release.ActiveCfg = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792652}.Release.Build.0 = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792651}.Debug.ActiveCfg = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792651}.Debug.Build.0 = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792651}.Release.ActiveCfg = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792651}.Release.Build.0 = Release|Win32
{5E18CC83-6092-48FE-A677-B832A0D3A650}.Debug.ActiveCfg = Debug|Win32
{5E18CC83-6092-48FE-A677-B832A0D3A650}.Debug.Build.0 = Debug|Win32
{5E18CC83-6092-48FE-A677-B832A0D3A650}.Release.ActiveCfg = Release|Win32
@@ -349,10 +397,6 @@ Global
{58CCE183-6092-48FE-A4F7-BA0D3A792637}.Debug.Build.0 = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.ActiveCfg = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792637}.Release.Build.0 = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792636}.Debug.ActiveCfg = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792636}.Debug.Build.0 = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792636}.Release.ActiveCfg = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792636}.Release.Build.0 = Release|Win32
{FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Debug.ActiveCfg = Debug|Win32
{FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Debug.Build.0 = Debug|Win32
{FFAA56F1-32EC-4B22-B6BD-95A311A67C35}.Release.ActiveCfg = Release|Win32
@@ -465,10 +509,6 @@ Global
{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
{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
{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
@@ -485,6 +525,86 @@ Global
{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
{58CCE183-6092-48FE-A4F7-BA0D3A792652}.Debug.ActiveCfg = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792652}.Debug.Build.0 = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792652}.Release.ActiveCfg = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792652}.Release.Build.0 = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792651}.Debug.ActiveCfg = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792651}.Debug.Build.0 = Debug|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792651}.Release.ActiveCfg = Release|Win32
{58CCE183-6092-48FE-A4F7-BA0D3A792651}.Release.Build.0 = Release|Win32
{58CCE183-6032-12FE-4FC7-83A79F760B61}.Debug.ActiveCfg = Debug|Win32
{58CCE183-6032-12FE-4FC7-83A79F760B61}.Debug.Build.0 = Debug|Win32
{58CCE183-6032-12FE-4FC7-83A79F760B61}.Release.ActiveCfg = Release|Win32
{58CCE183-6032-12FE-4FC7-83A79F760B61}.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
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
EndGlobalSection

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_anonymous_conditionA"
ProjectGUID="{5C1B8183-0296-4F83-1F22-001005220544}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_anonymous_conditionA"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_conditionA_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_anonymous_conditionA.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_anonymous_conditionA"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_conditionA.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4BE2BEF1-C8A9-53BC-1A02-952FFA2D75A2}">
<File
RelativePath="..\..\doc\code\doc_anonymous_conditionA.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{913380FA-5C7A-7644-A568-62F585B5FBCB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_anonymous_conditionB"
ProjectGUID="{58C1FE83-2906-E643-2F12-024410052254}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_anonymous_conditionB"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_conditionB_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_anonymous_conditionB.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_anonymous_conditionB"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_conditionB.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4B2EF711-14CA-5347-F025-7F75AF2D22A2}">
<File
RelativePath="..\..\doc\code\doc_anonymous_conditionB.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{92431970-57CA-4ED4-85A6-624258635BFB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_anonymous_mutexA"
ProjectGUID="{58C1B183-9026-4E63-12F2-005412200054}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_anonymous_mutexA"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_mutexA_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_anonymous_mutexA.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_anonymous_mutexA"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_mutexA.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4BE712F1-C98A-4537-12A0-72D752FFA2A2}">
<File
RelativePath="..\..\doc\code\doc_anonymous_mutexA.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{91243380-C57A-4764-A856-625FEF585BFB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_anonymous_mutexB"
ProjectGUID="{58C1B183-9026-4E63-12F2-005202441254}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_anonymous_mutexB"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_mutexB_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_anonymous_mutexB.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_anonymous_mutexB"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_mutexB.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4B712EF1-98CA-4537-A012-72D2FF75A2A2}">
<File
RelativePath="..\..\doc\code\doc_anonymous_mutexB.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{91243970-C57A-4624-A856-625142585BFB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_anonymous_semaphoreA"
ProjectGUID="{5CB81183-29FB-F843-24FF-022050100544}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_anonymous_semaphoreA"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_semaphoreA_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_anonymous_semaphoreA.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_anonymous_semaphoreA"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_semaphoreA.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4BEFCAB1-8AC0-3B5C-AF1B-9522D75AFFA2}">
<File
RelativePath="..\..\doc\code\doc_anonymous_semaphoreA.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{918033FA-7644-7A5C-AFB8-62FB5FA585CB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_anonymous_semaphoreB"
ProjectGUID="{58FBE8C3-9026-FAB2-E643-000522441254}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_anonymous_semaphoreB"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_semaphoreB_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_anonymous_semaphoreB.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_anonymous_semaphoreB"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_semaphoreB.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4BCDF711-5717-14CA-F250-F2D8F75A22A2}">
<File
RelativePath="..\..\doc\code\doc_anonymous_semaphoreB.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{94310A70-5A86-5BFA-4ED4-62FEF535B86B}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_anonymous_upgradable_mutexA"
ProjectGUID="{5C18831B-F162-FA96-E6C3-FA5122040054}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_anonymous_upgradable_mutexA"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_upgradable_mutexA_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_anonymous_upgradable_mutexA.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_anonymous_upgradable_mutexA"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_upgradable_mutexA.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4BF1E712-4FB5-08CB-2A11-752DCD72F2B2}">
<File
RelativePath="..\..\doc\code\doc_anonymous_upgradable_mutexA.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{98238D43-76A8-57CB-4764-E5F572E85BFB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_anonymous_upgradable_mutexB"
ProjectGUID="{5C1B1043-1EFF-2793-4E63-245241283054}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_anonymous_upgradable_mutexB"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_upgradable_mutexB_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_anonymous_upgradable_mutexB.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_anonymous_upgradable_mutexB"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_anonymous_upgradable_mutexB.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4B712E2E-5347-A352-8C9F-FF72D27982A2}">
<File
RelativePath="..\..\doc\code\doc_anonymous_upgradable_mutexB.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{91991243-4624-C67A-B5A6-3E2DA5514BFB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -2,7 +2,7 @@
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_cont_mapA"
Name="doc_contA"
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792652}"
Keyword="Win32Proj">
<Platforms>
@@ -13,7 +13,7 @@
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_cont_mapA"
IntermediateDirectory="Debug/doc_contA"
ConfigurationType="1"
CharacterSet="2">
<Tool
@@ -33,11 +33,11 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_cont_mapA_d.exe"
OutputFile="$(OutDir)/doc_contA_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_cont_mapA.pdb"
ProgramDatabaseFile="$(OutDir)/doc_contA.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
@@ -65,7 +65,7 @@
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_cont_mapA"
IntermediateDirectory="Release/doc_contA"
ConfigurationType="1"
CharacterSet="2">
<Tool
@@ -82,7 +82,7 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_cont_mapA.exe"
OutputFile="$(OutDir)/doc_contA.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
@@ -120,7 +120,7 @@
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
<File
RelativePath="..\..\doc\code\doc_cont_mapA.cpp">
RelativePath="..\..\doc\code\doc_contA.cpp">
</File>
</Filter>
<Filter

View File

@@ -2,7 +2,7 @@
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_cont_mapB"
Name="doc_contB"
ProjectGUID="{58CCE183-6092-48FE-A4F7-BA0D3A792651}"
Keyword="Win32Proj">
<Platforms>
@@ -13,7 +13,7 @@
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_cont_mapB"
IntermediateDirectory="Debug/doc_contB"
ConfigurationType="1"
CharacterSet="2">
<Tool
@@ -33,11 +33,11 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_cont_mapB_d.exe"
OutputFile="$(OutDir)/doc_contB_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_cont_mapB.pdb"
ProgramDatabaseFile="$(OutDir)/doc_contB.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
@@ -65,7 +65,7 @@
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_cont_mapB"
IntermediateDirectory="Release/doc_contB"
ConfigurationType="1"
CharacterSet="2">
<Tool
@@ -82,7 +82,7 @@
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_cont_mapB.exe"
OutputFile="$(OutDir)/doc_contB.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
@@ -120,7 +120,7 @@
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
<File
RelativePath="..\..\doc\code\doc_cont_mapB.cpp">
RelativePath="..\..\doc\code\doc_contB.cpp">
</File>
</Filter>
<Filter

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_message_queueA"
ProjectGUID="{51B189C3-4E63-9026-12F2-12200AF54054}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_message_queueA"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_message_queueA_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_message_queueA.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_message_queueA"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_message_queueA.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{42FBE7AD-C8A9-12A0-5347-72FFA25175A2}">
<File
RelativePath="..\..\doc\code\doc_message_queueA.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{91434280-4764-C57A-B956-625855FEFCAB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_message_queueB"
ProjectGUID="{5C1B1813-12C2-0296-4E63-244549126520}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_message_queueB"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_message_queueB_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_message_queueB.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_message_queueB"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_message_queueB.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{412EC7F1-45A7-98CA-A012-7952A2D2AFF2}">
<File
RelativePath="..\..\doc\code\doc_message_queueB.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{92437370-6244-D57A-A856-645251825CDB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_named_conditionA"
ProjectGUID="{58EB1CB3-1354-364E-12F2-154356612054}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_named_conditionA"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_named_conditionA_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_named_conditionA.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_named_conditionA"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_named_conditionA.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{AB2F71E1-2E95-7FA3-2A10-741FA12A22F2}">
<File
RelativePath="..\..\doc\code\doc_named_conditionA.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{91553810-7ECB-6474-5A96-62EF51EBABFB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_named_conditionB"
ProjectGUID="{58181CB3-5134-634E-12F2-155435622054}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_named_conditionB"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_named_conditionB_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_named_conditionB.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_named_conditionB"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_named_conditionB.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{AB712FE1-92E5-7543-12A0-74522FFA12A2}">
<File
RelativePath="..\..\doc\code\doc_named_conditionB.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{91815530-7C5B-6744-5A86-62EF51EEFBFB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_named_mutex"
ProjectGUID="{58C181B3-9516-463E-2F12-122155400054}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_named_mutex"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_named_mutex_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_named_mutex.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_named_mutex"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_named_mutex.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{ABE712F1-C925-3745-2A10-7214FFA752A2}">
<File
RelativePath="..\..\doc\code\doc_named_mutex.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{91338150-57CA-4674-85A6-6216EFEF5BFB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="doc_shared_memory"
ProjectGUID="{58CCE183-6032-12FE-4FC7-83A79F760B61}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/doc_shared_memory"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_shared_memory_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/doc_shared_memory.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/doc_shared_memory"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/doc_shared_memory.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4F7371DF-A5DA-6437-60A6-22A352A2D7FF}">
<File
RelativePath="..\..\doc\code\doc_shared_memory.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93909538-DA9B-44D0-8EB8-E55F262BEBFB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -117,6 +117,9 @@
<File
RelativePath="..\..\..\..\boost\interprocess\smart_ptr\shared_ptr.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\smart_ptr\unique_ptr.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\smart_ptr\weak_ptr.hpp">
</File>
@@ -232,7 +235,7 @@
RelativePath="..\..\..\..\boost\interprocess\sync\interprocess_semaphore.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\sync\interprocess_sharable_mutex.hpp">
RelativePath="..\..\..\..\boost\interprocess\sync\interprocess_upgradable_mutex.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\sync\lock_options.hpp">
@@ -240,6 +243,9 @@
<File
RelativePath="..\..\..\..\boost\interprocess\sync\mutex_family.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\sync\named_condition.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\sync\named_mutex.hpp">
</File>
@@ -249,6 +255,9 @@
<File
RelativePath="..\..\..\..\boost\interprocess\sync\named_semaphore.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\sync\named_upgradable_mutex.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\sync\null_mutex.hpp">
</File>
@@ -258,6 +267,9 @@
<File
RelativePath="..\..\..\..\boost\interprocess\sync\sharable_lock.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\sync\upgradable_lock.hpp">
</File>
<Filter
Name="win32"
Filter="">
@@ -267,12 +279,6 @@
<File
RelativePath="..\..\..\..\boost\interprocess\sync\win32\interprocess_mutex.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\sync\win32\interprocess_recursive_mutex.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\sync\win32\interprocess_recursive_mutex.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\sync\win32\interprocess_semaphore.hpp">
</File>
@@ -323,6 +329,13 @@
RelativePath="..\..\..\..\boost\interprocess\sync\posix\semaphore_wrapper.hpp">
</File>
</Filter>
<Filter
Name="emulation"
Filter="">
<File
RelativePath="..\..\..\..\boost\interprocess\sync\emulation\interprocess_recursive_mutex.hpp">
</File>
</Filter>
</Filter>
<Filter
Name="Memory algorithms"
@@ -347,12 +360,9 @@
<File
RelativePath="..\..\..\..\boost\interprocess\ipc\message_queue.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\ipc\named_fifo.hpp">
</File>
</Filter>
<Filter
Name="Front-ends"
Name="Managed Memory Classes"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
<File
@@ -380,7 +390,7 @@
RelativePath="..\..\..\..\boost\interprocess\mapped_file.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\memory_mapping.hpp">
RelativePath="..\..\..\..\boost\interprocess\memory_mappable.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\segment_manager.hpp">
@@ -413,6 +423,9 @@
<File
RelativePath="..\..\..\..\boost\interprocess\detail\managed_memory_impl.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\detail\move.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\detail\multi_segment_services.hpp">
</File>
@@ -425,6 +438,9 @@
<File
RelativePath="..\..\..\..\boost\interprocess\detail\os_file_functions.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\detail\os_thread_functions.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\detail\utilities.hpp">
</File>
@@ -444,6 +460,9 @@
<File
RelativePath="..\..\doc\Jamfile.v2">
</File>
<File
RelativePath="..\..\doc\old_interprocess.qbk">
</File>
</Filter>
<Filter
Name="Indexes"
@@ -455,7 +474,7 @@
RelativePath="..\..\..\..\boost\interprocess\indexes\map_index.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\indexes\null_map_index.hpp">
RelativePath="..\..\..\..\boost\interprocess\indexes\null_index.hpp">
</File>
<File
RelativePath="..\..\..\..\boost\interprocess\indexes\unordered_map_index.hpp">
@@ -468,21 +487,18 @@
Name="Test"
Filter="">
<File
RelativePath="..\..\test\Jamfile">
RelativePath="..\..\test\Jamfile.v2">
</File>
</Filter>
<Filter
Name="Example"
Filter="">
<File
RelativePath="..\..\example\Jamfile">
</File>
</Filter>
<Filter
Name="Doc"
Filter="">
<File
RelativePath="..\..\doc\code\Jamfile">
RelativePath="..\..\doc\code\Jamfile.v2">
</File>
</Filter>
</Filter>
@@ -505,6 +521,9 @@
<File
RelativePath="..\..\test\boost_interprocess_check.hpp">
</File>
<File
RelativePath="..\..\test\condition_test_template.hpp">
</File>
<File
RelativePath="..\..\test\expand_bwd_test_allocator.hpp">
</File>
@@ -555,6 +574,25 @@
</File>
</Filter>
</Filter>
<Filter
Name="Doc"
Filter="">
<File
RelativePath="..\..\doc\code\doc_anonymous_condition_shared_data.hpp">
</File>
<File
RelativePath="..\..\doc\code\doc_anonymous_mutex_shared_data.hpp">
</File>
<File
RelativePath="..\..\doc\code\doc_anonymous_semaphore_shared_data.hpp">
</File>
<File
RelativePath="..\..\doc\code\doc_named_condition_shared_data.hpp">
</File>
<File
RelativePath="..\..\doc\code\doc_upgradable_mutex_shared_data.hpp">
</File>
</Filter>
<File
RelativePath="..\..\..\..\boost\interprocess\interprocess_fwd.hpp">
</File>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="named_condition_test"
ProjectGUID="{58CC2563-6092-48FE-FAF7-BA046A792658}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/named_condition_test"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/named_condition_test_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/named_condition_test.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/named_condition_test"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/named_condition_test.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{47FCF371-C293-4376-A86B-22D7A552AE2F}">
<File
RelativePath="..\..\test\named_condition_test.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{95393980-9B8D-4b16-89FB-5FB62E52EBFB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="named_upgradable_mutex_test"
ProjectGUID="{48C1FBE8-F7A4-0961-48FE-7D93A63B0A04}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/named_upgradable_mutex_test"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/named_upgradable_mutex_test_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/named_upgradable_mutex_test.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/named_upgradable_mutex_test"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/named_upgradable_mutex_test.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{47FC93F1-C57A-4DC1-60A6-45D723542AFF}">
<File
RelativePath="..\..\test\named_upgradable_mutex_test.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{90F895B3-8E0B-4b12-7B53-652E53BE25FB}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -0,0 +1,135 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="shared_memory_mapping_test"
ProjectGUID="{5CE18C83-6025-36FE-A4F7-BA09176D3A11}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="../../Bin/Win32/Debug"
IntermediateDirectory="Debug/shared_memory_mappable_test"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
MinimalRebuild="TRUE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/mapped_file_test_d.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/shared_memory_mappable_test.pdb"
SubSystem="1"
TargetMachine="1"
FixedBaseAddress="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="../../Bin/Win32/Release"
IntermediateDirectory="Release/shared_memory_mappable_test"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="3"
AdditionalIncludeDirectories="../../../.."
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;BOOST_DATE_TIME_NO_LIB"
RuntimeLibrary="2"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="0"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="winmm.lib"
OutputFile="$(OutDir)/shared_memory_mappable_test.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="../../../../stage/lib"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4F737F1-C7A5-3256-66A0-2A352A22D7FF}">
<File
RelativePath="..\..\test\shared_memory_mapping_test.cpp">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{5CE18253-89BD-b044-826B-62B5F2EBFBE5}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View File

@@ -1,6 +1,6 @@
//////////////////////////////////////////////////////////////////////////////
//
// (C) Copyright Ion Gaztañaga 2004-2006. Distributed under the Boost
// (C) Copyright Ion Gazta<EFBFBD>ga 2004-2006. 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)
//

View File

@@ -40,7 +40,6 @@ void PrintContents(const Container &cont, const char *contName)
} //namespace interprocess{
} //namespace boost{
#include <boost/interprocess/detail/config_end.hpp>
#endif //#ifndef BOOST_PRINTCONTAINER_HPP

View File

@@ -1,60 +0,0 @@
# Boost interprocess Library test Jamfile
# (C) Copyright Ion Gaztañaga 2004-2006.
# Use, modification, and distribution are subject to 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/test for the library home page.
# Declare the location of this subproject relative to the root.
subproject libs/interprocess/test ;
# bring in rules for testing
import testing ;
{
template boost_interprocess_test_dll
: ## sources ##
## <lib>../../test/build/boost_unit_test_framework
## <lib>../../thread/build/boost_thread
<lib>@boost/libs/test/build/boost_unit_test_framework
<dll>@boost/libs/thread/build/boost_thread
: ## requirements ##
<sysinclude>$(BOOST_ROOT)
<sysinclude>$(INTERPROCESS_ROOT)
<runtime-link>dynamic
<threading>multi
<define>BOOST_ALL_NO_LIB=1
: ## default build ##
debug
;
test-suite "interprocess"
:
[ run shared_memory_test.cpp <template>boost_interprocess_test_dll ]
[ run named_mutex_test.cpp <template>boost_interprocess_test_dll ]
[ run named_semaphore_test.cpp <template>boost_interprocess_test_dll ]
[ run allocexcept_test.cpp <template>boost_interprocess_test_dll ]
[ run bufferstream_test.cpp <template>boost_interprocess_test_dll ]
[ run cached_node_allocator_test.cpp <template>boost_interprocess_test_dll ]
[ run data_test.cpp <template>boost_interprocess_test_dll ]
[ run deque_test.cpp <template>boost_interprocess_test_dll ]
[ run flat_tree_test.cpp <template>boost_interprocess_test_dll ]
#[ run intersegment_ptr_test.cpp <template>boost_interprocess_test_dll ]
[ run list_test.cpp <template>boost_interprocess_test_dll ]
[ run file_mapping_test.cpp <template>boost_interprocess_test_dll ]
[ run node_allocator_test.cpp <template>boost_interprocess_test_dll ]
[ run null_index_test.cpp <template>boost_interprocess_test_dll ]
[ run private_node_allocator_test.cpp <template>boost_interprocess_test_dll ]
[ run barrier_test.cpp <template>boost_interprocess_test_dll ]
[ run condition_test.cpp <template>boost_interprocess_test_dll ]
[ run message_queue_test.cpp <template>boost_interprocess_test_dll ]
#[ run shared_read_write_mutex_test.cpp <template>boost_interprocess_test_dll ]
[ run slist_test.cpp <template>boost_interprocess_test_dll ]
[ run string_test.cpp <template>boost_interprocess_test_dll ]
[ run tree_test.cpp <template>boost_interprocess_test_dll ]
[ run user_buffer_test.cpp <template>boost_interprocess_test_dll ]
[ run vectorstream_test.cpp <template>boost_interprocess_test_dll ]
[ run intrusive_ptr_test.cpp <template>boost_interprocess_test_dll ]
;
}

View File

@@ -1,26 +1,34 @@
# (C) Copyright William E. Kempf 2001. Permission to copy, use, modify, sell
# and distribute this software is granted provided this copyright notice
# appears in all copies. This software is provided "as is" without express or
# implied warranty, and with no claim as to its suitability for any purpose.
# Boost Interprocess Library Test Jamfile
# bring in rules for testing
import testing ;
# (C) Copyright Ion Gaztañaga 2006.
# Use, modification and distribution are subject to 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)
project
: requirements <library>../../test/build//boost_unit_test_framework
<threading>multi
: requirements <library>../../thread/build//boost_thread
<threading>multi
;
# Adapted from John Maddock's TR1 Jamfile.v2
# Copyright John Maddock 2005.
# Use, modification and distribution are subject to 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)
# this rule enumerates through all the sources and invokes
# the run rule for each source, the result is a list of all
# the run rules, which we can pass on to the test_suite rule:
rule test_all
{
test-suite "interprocess"
: [ run named_mutex_test.cpp ]
# [ run test_mutex.cpp ]
# [ run test_condition.cpp ]
# [ run test_tss.cpp ]
# [ run test_once.cpp ]
# [ run test_xtime.cpp ]
# [ run test_barrier.cpp ]
;
local all_rules = ;
for local fileb in [ glob *.cpp ]
{
all_rules += [ run $(fileb) /boost/thread//boost_thread
: # additional args
: # test-files
: # requirements
] ;
}
return $(all_rules) ;
}
test-suite interprocess_test : [ test_all r ] ;

View File

@@ -38,7 +38,7 @@ int main ()
const int memsize = 16384;
const char *const shMemName = "MySharedMemory";
managed_shared_memory::remove(shMemName);
shared_memory_object::remove(shMemName);
//Named allocate capable shared mem allocator
managed_shared_memory segment(create_only, shMemName, memsize);

View File

@@ -3,7 +3,7 @@
#include <boost/interprocess/streams/bufferstream.hpp>
#include <sstream>
#include <string.h>
#include <cstring>
using namespace boost::interprocess;
@@ -32,7 +32,7 @@ static int bufferstream_test()
std_stringstream << "testline: " << i << std::endl;
}
if(strcmp(buffer, std_stringstream.str().c_str()) != 0){
if(std::strcmp(buffer, std_stringstream.str().c_str()) != 0){
return 1;
}
@@ -79,7 +79,7 @@ static int bufferstream_test()
}
//Contents should be different
if(strcmp(buffer, std_stringstream.str().c_str()) == 0){
if(std::strcmp(buffer, std_stringstream.str().c_str()) == 0){
return 1;
}
//The stream shouldn't be in good health

View File

@@ -54,7 +54,7 @@ int main ()
const char *const shMemName = "MySharedMemory";
const int max = 100;
wmanaged_shared_memory::remove(shMemName);
shared_memory_object::remove(shMemName);
//Create managed shared memory
wmanaged_shared_memory segment(create_only, shMemName, memsize);

View File

@@ -1,322 +1,17 @@
// Copyright (C) 2001-2003
// William E. Kempf
//
// Permission to use, copy, modify, distribute and sell this software
// and its documentation for any purpose is hereby granted without fee,
// provided that the above copyright notice appear in all copies and
// that both that copyright notice and this permission notice appear
// in supporting documentation. William E. Kempf makes no representations
// about the suitability of this software for any purpose.
// It is provided "as is" without express or implied warranty.
//////////////////////////////////////////////////////////////////////////////
//
// (C) Copyright Ion Gaztañaga 2005-2006. 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.
//
//////////////////////////////////////////////////////////////////////////////
#include <boost/interprocess/detail/config_begin.hpp>
#include <boost/interprocess/detail/workaround.hpp>
#include <boost/thread/detail/config.hpp>
#include <boost/interprocess/sync/interprocess_condition.hpp>
#include <boost/thread/thread.hpp>
#include <boost/date_time/posix_time/ptime.hpp>
#include <boost/thread/xtime.hpp>
#include <boost/interprocess/sync/interprocess_mutex.hpp>
#include "condition_test_template.hpp"
namespace{
boost::posix_time::ptime ptime_delay(int secs)
{
return boost::posix_time::microsec_clock::universal_time() +
boost::posix_time::time_duration(0, 0, 10);
}
inline boost::xtime delay(int secs, int msecs=0, int nsecs=0)
{
const int MILLISECONDS_PER_SECOND = 1000;
const int NANOSECONDS_PER_SECOND = 1000000000;
const int NANOSECONDS_PER_MILLISECOND = 1000000;
boost::xtime xt;
int ret = boost::xtime_get(&xt, boost::TIME_UTC);
assert(ret == static_cast<int>(boost::TIME_UTC));(void)ret;
nsecs += xt.nsec;
msecs += nsecs / NANOSECONDS_PER_MILLISECOND;
secs += msecs / MILLISECONDS_PER_SECOND;
nsecs += (msecs % MILLISECONDS_PER_SECOND) * NANOSECONDS_PER_MILLISECOND;
xt.nsec = nsecs % NANOSECONDS_PER_SECOND;
xt.sec += secs + (nsecs / NANOSECONDS_PER_SECOND);
return xt;
}
template <typename F, typename T>
class binder
{
public:
binder(const F& func, const T& param)
: func(func), param(param) { }
void operator()() const { func(param); }
private:
F func;
T param;
};
template <typename F, typename T>
binder<F, T> bind(const F& func, const T& param)
{
return binder<F, T>(func, param);
}
} // namespace
struct condition_test_data
{
condition_test_data() : notified(0), awoken(0) { }
boost::interprocess::interprocess_mutex interprocess_mutex;
boost::interprocess::interprocess_condition interprocess_condition;
int notified;
int awoken;
};
void condition_test_thread(condition_test_data* data)
{
boost::interprocess::scoped_lock<boost::interprocess::interprocess_mutex>
lock(data->interprocess_mutex);
assert(lock ? true : false);
while (!(data->notified > 0))
data->interprocess_condition.wait(lock);
assert(lock ? true : false);
data->awoken++;
}
struct cond_predicate
{
cond_predicate(int& var, int val) : _var(var), _val(val) { }
bool operator()() { return _var == _val; }
int& _var;
int _val;
};
void condition_test_waits(condition_test_data* data)
{
boost::interprocess::scoped_lock<boost::interprocess::interprocess_mutex>
lock(data->interprocess_mutex);
assert(lock ? true : false);
// Test wait.
while (data->notified != 1)
data->interprocess_condition.wait(lock);
assert(lock ? true : false);
assert(data->notified == 1);
data->awoken++;
data->interprocess_condition.notify_one();
// Test predicate wait.
data->interprocess_condition.wait(lock, cond_predicate(data->notified, 2));
assert(lock ? true : false);
assert(data->notified == 2);
data->awoken++;
data->interprocess_condition.notify_one();
// Test timed_wait.
while (data->notified != 3)
data->interprocess_condition.timed_wait(lock, ptime_delay(10));
assert(lock ? true : false);
assert(data->notified == 3);
data->awoken++;
data->interprocess_condition.notify_one();
// Test predicate timed_wait.
cond_predicate pred(data->notified, 4);
bool ret = data->interprocess_condition.timed_wait(lock, ptime_delay(10), pred);
assert(ret);(void)ret;
assert(lock ? true : false);
assert(pred());
assert(data->notified == 4);
data->awoken++;
data->interprocess_condition.notify_one();
}
void do_test_condition_notify_one()
{
condition_test_data data;
boost::thread thread(bind(&condition_test_thread, &data));
{
boost::interprocess::scoped_lock<boost::interprocess::interprocess_mutex>
lock(data.interprocess_mutex);
assert(lock ? true : false);
data.notified++;
data.interprocess_condition.notify_one();
}
thread.join();
assert(data.awoken == 1);
}
void do_test_condition_notify_all()
{
const int NUMTHREADS = 5;
boost::thread_group threads;
condition_test_data data;
for (int i = 0; i < NUMTHREADS; ++i)
threads.create_thread(bind(&condition_test_thread, &data));
{
boost::interprocess::scoped_lock<boost::interprocess::interprocess_mutex>
lock(data.interprocess_mutex);
assert(lock ? true : false);
data.notified++;
data.interprocess_condition.notify_all();
}
threads.join_all();
assert(data.awoken == NUMTHREADS);
}
void do_test_condition_waits()
{
condition_test_data data;
boost::thread thread(bind(&condition_test_waits, &data));
{
boost::interprocess::scoped_lock<boost::interprocess::interprocess_mutex>
lock(data.interprocess_mutex);
assert(lock ? true : false);
boost::thread::sleep(delay(1));
data.notified++;
data.interprocess_condition.notify_one();
while (data.awoken != 1)
data.interprocess_condition.wait(lock);
assert(lock ? true : false);
assert(data.awoken == 1);
boost::thread::sleep(delay(1));
data.notified++;
data.interprocess_condition.notify_one();
while (data.awoken != 2)
data.interprocess_condition.wait(lock);
assert(lock ? true : false);
assert(data.awoken == 2);
boost::thread::sleep(delay(1));
data.notified++;
data.interprocess_condition.notify_one();
while (data.awoken != 3)
data.interprocess_condition.wait(lock);
assert(lock ? true : false);
assert(data.awoken == 3);
boost::thread::sleep(delay(1));
data.notified++;
data.interprocess_condition.notify_one();
while (data.awoken != 4)
data.interprocess_condition.wait(lock);
assert(lock ? true : false);
assert(data.awoken == 4);
}
thread.join();
assert(data.awoken == 4);
}
//Message queue simulation test
static boost::interprocess::interprocess_condition cond_not_empty;
static boost::interprocess::interprocess_condition cond_not_full;
static boost::interprocess::interprocess_mutex interprocess_mutex;
static volatile int count = 0;
//Function that removes items from queue
static void condition_func(void)
{
boost::interprocess::scoped_lock<boost::interprocess::interprocess_mutex>
lock(interprocess_mutex);
while(count==0)
cond_not_empty.wait(lock);
--count;
cond_not_full.notify_one();
}
//Queue functions
void do_test_condition_queue(void)
{
const int queue_size = 20;
const int thread_factor = 3;
const int NumThreads = thread_factor*queue_size;
//Create threads that will decrease count
{
boost::thread_group thgroup;
int i;
for(i = 0; i< NumThreads; ++i){
thgroup.create_thread(condition_func);
}
//Wait until all threads are ready
boost::thread::sleep(delay(2));
//Fill 20 elements one by one in the queue simulation
//The sender will block if it fills the queue
for(i = 0; i< NumThreads; ++i){
boost::interprocess::scoped_lock<boost::interprocess::interprocess_mutex>
lock(interprocess_mutex);
while(count >= queue_size)
cond_not_full.wait(lock);
count++;
cond_not_empty.notify_one();
}
thgroup.join_all();
assert(count == 0);
}
//Create threads that will decrease count
{
boost::thread_group thgroup;
int i;
for(i = 0; i< NumThreads; ++i){
thgroup.create_thread(condition_func);
}
//Wait until all threads are ready
boost::thread::sleep(delay(2));
//Fill queue to the max size and notify all several times
for(i = 0; i < thread_factor; ++i){
{
boost::interprocess::scoped_lock<boost::interprocess::interprocess_mutex>
lock(interprocess_mutex);
count = queue_size;
cond_not_empty.notify_all();
}
//Wait until the queue is empty
while(count){
boost::thread::sleep(delay(1));
}
}
thgroup.join_all();
assert(count == 0);
}
}
using namespace boost::interprocess;
int main ()
{
do_test_condition_notify_one();
do_test_condition_notify_all();
do_test_condition_waits();
do_test_condition_queue();
return 0;
return test::do_test_condition<interprocess_condition, interprocess_mutex>() ?
0 : -1;
}
#include <boost/interprocess/detail/config_end.hpp>

View File

@@ -0,0 +1,394 @@
// Copyright (C) 2001-2003
// William E. Kempf
//
// Permission to use, copy, modify, distribute and sell this software
// and its documentation for any purpose is hereby granted without fee,
// provided that the above copyright notice appear in all copies and
// that both that copyright notice and this permission notice appear
// in supporting documentation. William E. Kempf makes no representations
// about the suitability of this software for any purpose.
// It is provided "as is" without express or implied warranty.
//////////////////////////////////////////////////////////////////////////////
//
// (C) Copyright Ion Gaztañaga 2005-2006. 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.
//
//////////////////////////////////////////////////////////////////////////////
#include <boost/interprocess/detail/config_begin.hpp>
#include <boost/interprocess/detail/workaround.hpp>
#include <boost/thread/detail/config.hpp>
#include <boost/interprocess/sync/interprocess_condition.hpp>
#include <boost/thread/thread.hpp>
#include <boost/date_time/posix_time/ptime.hpp>
#include <boost/thread/xtime.hpp>
#include <boost/interprocess/sync/interprocess_mutex.hpp>
namespace boost{
namespace interprocess{
namespace test {
boost::posix_time::ptime ptime_delay(int secs)
{
return boost::posix_time::microsec_clock::universal_time() +
boost::posix_time::time_duration(0, 0, 10);
}
inline boost::xtime delay(int secs, int msecs=0, int nsecs=0)
{
const int MILLISECONDS_PER_SECOND = 1000;
const int NANOSECONDS_PER_SECOND = 1000000000;
const int NANOSECONDS_PER_MILLISECOND = 1000000;
boost::xtime xt;
int ret = boost::xtime_get(&xt, boost::TIME_UTC);
assert(ret == static_cast<int>(boost::TIME_UTC));(void)ret;
nsecs += xt.nsec;
msecs += nsecs / NANOSECONDS_PER_MILLISECOND;
secs += msecs / MILLISECONDS_PER_SECOND;
nsecs += (msecs % MILLISECONDS_PER_SECOND) * NANOSECONDS_PER_MILLISECOND;
xt.nsec = nsecs % NANOSECONDS_PER_SECOND;
xt.sec += secs + (nsecs / NANOSECONDS_PER_SECOND);
return xt;
}
template <typename F, typename T>
class binder
{
public:
binder(const F& func, const T& param)
: func(func), param(param) { }
void operator()() const { func(param); }
private:
F func;
T param;
};
template <typename F, typename T>
binder<F, T> bind_function(F func, T param)
{
return binder<F, T>(func, param);
}
template <class Condition, class Mutex>
struct condition_test_data
{
condition_test_data() : notified(0), awoken(0) { }
~condition_test_data()
{}
Mutex mutex;
Condition condition;
int notified;
int awoken;
};
template <class Condition, class Mutex>
void condition_test_thread(condition_test_data<Condition, Mutex>* data)
{
boost::interprocess::scoped_lock<Mutex>
lock(data->mutex);
assert(lock ? true : false);
while (!(data->notified > 0))
data->condition.wait(lock);
assert(lock ? true : false);
data->awoken++;
}
struct cond_predicate
{
cond_predicate(int& var, int val) : _var(var), _val(val) { }
bool operator()() { return _var == _val; }
int& _var;
int _val;
};
template <class Condition, class Mutex>
void condition_test_waits(condition_test_data<Condition, Mutex>* data)
{
boost::interprocess::scoped_lock<Mutex>
lock(data->mutex);
assert(lock ? true : false);
// Test wait.
while (data->notified != 1)
data->condition.wait(lock);
assert(lock ? true : false);
assert(data->notified == 1);
data->awoken++;
data->condition.notify_one();
// Test predicate wait.
data->condition.wait(lock, cond_predicate(data->notified, 2));
assert(lock ? true : false);
assert(data->notified == 2);
data->awoken++;
data->condition.notify_one();
// Test timed_wait.
while (data->notified != 3)
data->condition.timed_wait(lock, ptime_delay(10));
assert(lock ? true : false);
assert(data->notified == 3);
data->awoken++;
data->condition.notify_one();
// Test predicate timed_wait.
cond_predicate pred(data->notified, 4);
bool ret = data->condition.timed_wait(lock, ptime_delay(10), pred);
assert(ret);(void)ret;
assert(lock ? true : false);
assert(pred());
assert(data->notified == 4);
data->awoken++;
data->condition.notify_one();
}
template <class Condition, class Mutex>
void do_test_condition_notify_one()
{
condition_test_data<Condition, Mutex> data;
boost::thread thread(bind_function(&condition_test_thread<Condition, Mutex>, &data));
{
boost::interprocess::scoped_lock<Mutex>
lock(data.mutex);
assert(lock ? true : false);
data.notified++;
data.condition.notify_one();
}
thread.join();
assert(data.awoken == 1);
}
template <class Condition, class Mutex>
void do_test_condition_notify_all()
{
const int NUMTHREADS = 5;
boost::thread_group threads;
condition_test_data<Condition, Mutex> data;
for (int i = 0; i < NUMTHREADS; ++i)
threads.create_thread(bind_function(&condition_test_thread<Condition, Mutex>, &data));
{
boost::interprocess::scoped_lock<Mutex>
lock(data.mutex);
assert(lock ? true : false);
data.notified++;
data.condition.notify_all();
}
threads.join_all();
assert(data.awoken == NUMTHREADS);
}
template <class Condition, class Mutex>
void do_test_condition_waits()
{
condition_test_data<Condition, Mutex> data;
boost::thread thread(bind_function(&condition_test_waits<Condition, Mutex>, &data));
{
boost::interprocess::scoped_lock<Mutex>
lock(data.mutex);
assert(lock ? true : false);
boost::thread::sleep(delay(1));
data.notified++;
data.condition.notify_one();
while (data.awoken != 1)
data.condition.wait(lock);
assert(lock ? true : false);
assert(data.awoken == 1);
boost::thread::sleep(delay(1));
data.notified++;
data.condition.notify_one();
while (data.awoken != 2)
data.condition.wait(lock);
assert(lock ? true : false);
assert(data.awoken == 2);
boost::thread::sleep(delay(1));
data.notified++;
data.condition.notify_one();
while (data.awoken != 3)
data.condition.wait(lock);
assert(lock ? true : false);
assert(data.awoken == 3);
boost::thread::sleep(delay(1));
data.notified++;
data.condition.notify_one();
while (data.awoken != 4)
data.condition.wait(lock);
assert(lock ? true : false);
assert(data.awoken == 4);
}
thread.join();
assert(data.awoken == 4);
}
//Message queue simulation test
template <class Condition>
inline Condition &cond_empty()
{
static Condition cond_empty;
return cond_empty;
}
template <class Condition>
inline Condition &cond_full()
{
static Condition cond_full;
return cond_full;
}
template <class Mutex>
inline Mutex &mutex()
{
static Mutex mut;
return mut;
}
static volatile int count = 0;
static volatile int waiting_readers = 0;
static volatile int waiting_writer = 0;
const int queue_size = 3;
const int thread_factor = 10;
const int NumThreads = thread_factor*queue_size;
//Function that removes items from queue
template <class Condition, class Mutex>
static void condition_func(void)
{
boost::interprocess::scoped_lock<Mutex>
lock(mutex<Mutex>());
while(count == 0){
++waiting_readers;
cond_empty<Condition>().wait(lock);
--waiting_readers;
}
--count;
if(waiting_writer)
cond_full<Condition>().notify_one();
}
//Queue functions
template <class Condition, class Mutex>
void do_test_condition_queue_notify_one(void)
{
//Force mutex and condition creation
cond_empty<Condition>();
cond_full<Condition>();
mutex<Mutex>();
//Create threads that will decrease count
{
//Initialize counters
count = 0;
waiting_readers = 0;
waiting_writer = 0;
boost::thread_group thgroup;
int i;
for(i = 0; i< NumThreads; ++i){
thgroup.create_thread(condition_func<Condition, Mutex>);
}
//Add 20 elements one by one in the queue simulation
//The sender will block if it fills the queue
for(i = 0; i < NumThreads; ++i){
boost::interprocess::scoped_lock<Mutex>
lock(mutex<Mutex>());
while(count == queue_size){
++waiting_writer;
cond_full<Condition>().wait(lock);
--waiting_writer;
}
count++;
if(waiting_readers)
cond_empty<Condition>().notify_one();
}
thgroup.join_all();
assert(count == 0);
assert(waiting_readers == 0);
assert(waiting_writer == 0);
}
}
//Queue functions
template <class Condition, class Mutex>
void do_test_condition_queue_notify_all(void)
{
//Force mutex and condition creation
cond_empty<Condition>();
cond_full<Condition>();
mutex<Mutex>();
//Create threads that will decrease count
{
//Initialize counters
count = 0;
waiting_readers = 0;
waiting_writer = 0;
boost::thread_group thgroup;
int i;
for(i = 0; i< NumThreads; ++i){
thgroup.create_thread(condition_func<Condition, Mutex>);
}
//Fill queue to the max size and notify all several times
for(i = 0; i < NumThreads; ++i){
boost::interprocess::scoped_lock<Mutex>
lock(mutex<Mutex>());
while(count == queue_size){
++waiting_writer;
cond_full<Condition>().wait(lock);
--waiting_writer;
}
count++;
if(waiting_readers)
cond_empty<Condition>().notify_all();
}
thgroup.join_all();
assert(count == 0);
assert(waiting_readers == 0);
assert(waiting_writer == 0);
}
}
template <class Condition, class Mutex>
bool do_test_condition()
{
do_test_condition_notify_one<Condition, Mutex>();
do_test_condition_notify_all<Condition, Mutex>();
do_test_condition_waits<Condition, Mutex>();
do_test_condition_queue_notify_one<Condition, Mutex>();
do_test_condition_queue_notify_all<Condition, Mutex>();
return true;
}
} //namespace test
} //namespace interprocess{
} //namespace boost{
#include <boost/interprocess/detail/config_end.hpp>

View File

@@ -26,7 +26,7 @@ int main ()
const int memsize = 65536;
const char *const shMemName = "MySharedMemory";
managed_shared_memory::remove(shMemName);
shared_memory_object::remove(shMemName);
//Create shared memory
managed_shared_memory segment(create_only, shMemName, memsize);

View File

@@ -67,7 +67,7 @@ int main ()
const char *const shMemName = "MySharedMemory";
const int max = 100;
my_managed_shared_memory::remove(shMemName);
shared_memory_object::remove(shMemName);
//Create shared memory
my_managed_shared_memory segment(create_only, shMemName, memsize);

View File

@@ -187,9 +187,7 @@ bool operator!=(const expand_bwd_test_allocator<T> &alloc1,
{ return true; }
} //namespace test {
} //namespace interprocess {
} //namespace boost {
#include <boost/interprocess/detail/config_end.hpp>

View File

@@ -1,6 +1,6 @@
//////////////////////////////////////////////////////////////////////////////
//
// (C) Copyright Ion Gaztañaga 2004-2006. Distributed under the Boost
// (C) Copyright Ion Gazta<EFBFBD>ga 2004-2006. 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)
//

View File

@@ -30,18 +30,19 @@ int main ()
{
//Create a file mapping
file_mapping mapping("my_file", file_mapping::rw_mode);
file_mapping mapping("my_file", file_mapping::read_write);
//Create two mapped regions, one half of the file each
mapped_region region (mapping
,mapped_region::read_write
,0
,FileSize/2
,file_mapping::rw_mode
,0);
);
mapped_region region2(mapping, FileSize/2
mapped_region region2(mapping
,mapped_region::read_write
,FileSize/2
,FileSize - FileSize/2
,file_mapping::rw_mode
,0);
);
//Fill two regions with a pattern
unsigned char *filler = static_cast<unsigned char*>(region.get_address());
@@ -99,14 +100,12 @@ int main ()
//Now check the pattern mapping a single read only mapped_region
{
//Create a file mapping
file_mapping mapping("my_file", file_mapping::ro_mode);
file_mapping mapping("my_file", file_mapping::read_only);
//Create a single regions, mapping all the file
mapped_region region (mapping
,0
,0
,file_mapping::ro_mode
,0);
,mapped_region::read_only
);
//Check pattern
unsigned char *pattern = static_cast<unsigned char*>(region.get_address());

View File

@@ -1,147 +0,0 @@
//////////////////////////////////////////////////////////////////////////////
//
// (C) Copyright Ion Gaztañaga 2004-2006. 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.
//
//////////////////////////////////////////////////////////////////////////////
#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/indexes/unordered_map_index.hpp>
#include <boost/interprocess/sync/mutex_family.hpp>
#include <boost/interprocess/allocators/node_allocator.hpp>
#include <boost/unordered_set.hpp>
#include <boost/unordered_map.hpp>
#include <boost/interprocess/offset_ptr.hpp>
#include <cstddef>
#include <new>
#include <memory>
#include <functional>
using namespace boost::interprocess;
//Customize managed_shared_memory class
typedef basic_managed_shared_memory
<char,
simple_seq_fit<mutex_family>,
unordered_map_index
> my_managed_shared_memory;
typedef node_allocator<int, 64, my_managed_shared_memory::segment_manager>
ShmemAllocator;
//explicit instantiations
template class boost::unordered_set < int,
boost::hash<int>,
std::equal_to<int>,
ShmemAllocator >;
template class boost::unordered_multiset < int,
boost::hash<int>,
std::equal_to<int>,
ShmemAllocator >;
template class boost::unordered_map < int, int,
boost::hash<int>,
std::equal_to<int>,
ShmemAllocator >;
template class boost::unordered_multimap < int, int,
boost::hash<int>,
std::equal_to<int>,
ShmemAllocator >;
int main ()
{
//Create shared memory
my_managed_shared_memory::remove("MySharedMemory");
my_managed_shared_memory segment
(create_only,
"MySharedMemory",//segment name (leading / for portability)
65536); //segment size in bytes
my_managed_shared_memory::remove("MySharedMemory2");
my_managed_shared_memory segment2
(create_only,
"MySharedMemory2",//segment name (leading / for portability)
65536); //segment size in bytes
typedef boost::unordered_set <int,
boost::hash<int>,
std::equal_to<int>,
ShmemAllocator > MyUnorderedSet;
boost::unordered_set <std::string> temp;
std::string value("std::string");
temp.insert(value);
boost::unordered_set<int,
boost::hash<int>,
std::equal_to<int>,
std::allocator<int> > stdset;
int initVal[] = {0, 1, 2, 3, 4, 5, 6 };
const int *begVal = initVal;
const int *endVal = initVal + sizeof(initVal)/sizeof(initVal[0]);
const ShmemAllocator alloc_inst (segment.get_segment_manager());
const ShmemAllocator alloc_inst2(segment2.get_segment_manager());
//Initialize with a range or iterators and allocator
const int Count = 100;
MyUnorderedSet *my_unordered_set =
segment.find_or_construct<MyUnorderedSet>
("MyUnorderedSet", std::nothrow) //object name
(begVal, //first ctor parameter
endVal, //second ctor parameter
Count,//third ctor parameter
MyUnorderedSet::hasher(), //fourth ctor parameter
MyUnorderedSet::key_equal(),//fifth ctor parameter
alloc_inst); // sixth ctor parameter
MyUnorderedSet *my_unordered_set2 =
segment2.find_or_construct<MyUnorderedSet>
("MyUnorderedSet2", std::nothrow) //object name
(begVal, //first ctor parameter
endVal, //second ctor parameter
Count,//third ctor parameter
MyUnorderedSet::hasher(), //fourth ctor parameter
MyUnorderedSet::key_equal(),//fifth ctor parameter
alloc_inst2); // sixth ctor parameter
MyUnorderedSet *my_unordered_set3 =
segment.find_or_construct<MyUnorderedSet>
("MyUnorderedSet3", std::nothrow) //object name
(*my_unordered_set);//first ctor parameter
//Use as you want
my_unordered_set->insert(begVal, endVal);
//Use as you want
my_unordered_set->insert(*begVal);
my_unordered_set->clear();
my_unordered_set->rehash(1000);
//Double swapping with equal allocators. Just internal swapping
my_unordered_set->swap(*my_unordered_set3);
my_unordered_set->swap(*my_unordered_set3);
my_unordered_set->insert(1000);
my_unordered_set->size();
my_unordered_set2->size();
my_unordered_set2->insert(begVal, endVal);
*my_unordered_set = *my_unordered_set2;
my_unordered_set->size();
// . . .
//When done, delete
segment.destroy<MyUnorderedSet>("MyUnorderedSet");
//When done, delete
segment2.destroy<MyUnorderedSet>("MyUnorderedSet2");
segment.destroy<MyUnorderedSet>("MyUnorderedSet3");
return 0;
}

View File

@@ -1,165 +0,0 @@
//////////////////////////////////////////////////////////////////////////////
//
// (C) Copyright Ion Gaztañaga 2005-2006. 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.
//
//////////////////////////////////////////////////////////////////////////////
#include <boost/interprocess/detail/config_begin.hpp>
#include <boost/interprocess/detail/workaround.hpp>
#include <boost/interprocess/intersegment_ptr.hpp>
#include <boost/interprocess/managed_multi_shared_memory.hpp>
#include <boost/interprocess/mem_algo/multi_simple_seq_fit.hpp>
//Instantiation headers
#include <boost/interprocess/sync/interprocess_mutex.hpp>
#include <boost/interprocess/allocators/allocator.hpp>
#include <boost/interprocess/containers/vector.hpp>
#include <boost/interprocess/containers/flat_set.hpp>
#include <boost/interprocess/containers/list.hpp>
#include <boost/interprocess/containers/set.hpp>
#include <boost/interprocess/indexes/map_index.hpp>
#include <boost/interprocess/streams/bufferstream.hpp>
#include <stdio.h>
#include <deque>
using namespace boost::interprocess;
typedef flat_map_intersegment<interprocess_mutex> basic_is_ptr;
template class intersegment_ptr<int/*, basic_is_ptr*/>;
typedef class intersegment_ptr<int/*, basic_is_ptr*/> is_ptr;
template class basic_managed_multi_shared_memory
<char
,multi_simple_seq_fit<mutex_family, intersegment_ptr<void/*, basic_is_ptr*/> >
,map_index>;
typedef basic_managed_multi_shared_memory
<char
,multi_simple_seq_fit<mutex_family, intersegment_ptr<void/*, basic_is_ptr*/> >
,map_index> my_managed_shared_memory;
typedef allocator<int, my_managed_shared_memory::segment_manager> allocator_int_t;
//Force instantiation of several containers to catch compile-time errors
template class vector<int, allocator_int_t >;
template class flat_set<int, std::less<int>, allocator_int_t >;
template class set<int, std::less<int>, allocator_int_t >;
template class list<int, allocator_int_t>;
//Multi-segment, shared memory linked list node
struct list_node
{
list_node(){}
list_node(list_node* ptr, int val)
: next(ptr), value(val){}
intersegment_ptr<list_node> next;
int value;
};
static int slist_test()
{
//Create shared memory
const std::size_t segment_size = 65536/100;
my_managed_shared_memory segment0
(create_only,
"MySharedMemory0",//segment0 name
segment_size); //segment0 size in bytes
my_managed_shared_memory segment1
(create_only,
"MySharedMemory1",//segment1 name
segment_size); //segment1 size in bytes
//Create linked list shared memory
intersegment_ptr<list_node> prev = 0, current, first;
//Let's make sure we need more than 1 segment
int i, max = 4*(segment_size/sizeof(list_node));
for(i = 0; i < max; ++i, prev = current){
//Allocate even nodes from segment0 and odds from segment1
if((i%2)==0)
current = static_cast<list_node*>(segment0.allocate(sizeof(list_node)));
else
current = static_cast<list_node*>(segment1.allocate(sizeof(list_node)));
current->value = i;
current->next = 0;
if(!prev)
first = current;
else
prev->next = current;
}
//Communicate list to other processes
//. . .
//When done, destroy list
i = 0;
for(current = first; current; ++i){
prev = current;
current = current->next;
assert(prev->value == i);
//Deallocate even nodes from segment0 and odds from segment1
if((i%2)==0)
segment0.deallocate(prev.get());
else
segment1.deallocate(prev.get());
}
return 0;
}
static int named_alloc_test()
{
my_managed_shared_memory multi_named_segment
(create_only,
"named_object_segments",
10000);
const std::size_t Name_Buf_Size = 100;
char name[Name_Buf_Size];
obufferstream formatter(name, Name_Buf_Size);
try{
typedef std::deque<list_node*> object_stack_t;
std::deque<list_node*> object_stack;
for(std::size_t i = 0; i < 10000; ++i){
formatter.seekp(0, std::ios::beg);
formatter << "my_object" << static_cast<unsigned int>(i) << std::ends;
object_stack.push_back
(multi_named_segment.construct<list_node>(name)());
}
object_stack_t::reverse_iterator
rit = object_stack.rbegin(),
ritend = object_stack.rend();
for(; rit != ritend; ++rit){
multi_named_segment.destroy_ptr(*rit);
}
}
catch(const bad_alloc &){
return 1;
}
return 0;
}
int main ()
{
try{
if(slist_test()==-1){
return 1;
}
if(named_alloc_test()==-1){
return 1;
}
}
catch(std::exception &e){
std::cout<< e.what();
}
return 0;
}
#include <boost/interprocess/detail/config_end.hpp>

View File

@@ -47,7 +47,7 @@ template class list<int_holder, std::allocator<int_holder> >;
int main ()
{
//Create shared memory
managed_shared_memory::remove("MySharedMemory");
shared_memory_object::remove("MySharedMemory");
managed_shared_memory segment
(create_only,
"MySharedMemory",//segment name

View File

@@ -51,7 +51,7 @@ int main ()
//Remove the file it is already created
std::remove(FileName);
//Named allocate capable memory mapped file front-end
//Named allocate capable memory mapped file managed memory class
managed_mapped_file mfile(create_only, FileName, FileSize);
//Construct the STL-like allocator with the segment manager

View File

@@ -32,7 +32,7 @@ int main ()
> my_managed_shared_memory;
//Create shared memory
my_managed_shared_memory::remove(shMemName);
shared_memory_object::remove(shMemName);
my_managed_shared_memory segment(create_only, shMemName, memsize);
//Now take the segment manager and launch memory test

View File

@@ -12,6 +12,7 @@
#include <boost/interprocess/ipc/message_queue.hpp>
#include <boost/interprocess/managed_external_buffer.hpp>
#include <boost/interprocess/managed_heap_memory.hpp>
#include <boost/interprocess/containers/map.hpp>
#include <boost/interprocess/containers/set.hpp>
#include <boost/interprocess/allocators/node_allocator.hpp>
@@ -74,7 +75,7 @@ bool test_priority_order()
tstamp_prev = tstamp;
}
return true;
};
}
//This test creates a in memory data-base using Interprocess machinery and
//serializes it through a message queue. Then rebuilds the data-base in
@@ -96,8 +97,8 @@ bool test_serialize_db()
const std::size_t BufferSize = 65536;
const std::size_t MaxMsgSize = 100;
//Allocate two memory buffers from heap using vector<char>
std::vector<char> buffer1(BufferSize, 0), buffer2(BufferSize, 0);
//Allocate a memory buffer to hold the destiny database using vector<char>
std::vector<char> buffer_destiny(BufferSize, 0);
message_queue::remove("message_queue");
//Create the message-queues
@@ -106,18 +107,13 @@ bool test_serialize_db()
//Open previously created message-queue simulating other process
message_queue mq2(open_only, "message_queue");
//interprocess machinery to manage previously allocated buffer1 and buffer2
managed_external_buffer db1, db2;
//Create Interprocess machinery in the first buffer
if(!db1.create(&buffer1[0], buffer1.size())){
return false;
}
//A managed heap memory to create the origin database
managed_heap_memory db_origin(buffer_destiny.size());
//Construct the map in the first buffer
MyMap *map1 = db1.construct<MyMap>("MyMap")
MyMap *map1 = db_origin.construct<MyMap>("MyMap")
(MyLess(),
db1.get_segment_manager());
db_origin.get_segment_manager());
if(!map1)
return false;
@@ -141,26 +137,18 @@ bool test_serialize_db()
//through mq2 to the second buffer
while(1){
//Send a fragment of buffer1 through mq1
std::size_t bytes_to_send = MaxMsgSize < (BufferSize - sent) ?
MaxMsgSize : (BufferSize - sent);
switch(mq1.send(&buffer1[sent], bytes_to_send, 0)){
case message_queue::ok:
sent += bytes_to_send;
break;
default:
return false;
}
//Receive the fragment through mq2 to buffer2
switch(mq2.receive(&buffer2[total_recvd], BufferSize - recvd,
recvd, priority)){
case message_queue::ok:
total_recvd += recvd;
break;
default:
return false;
}
std::size_t bytes_to_send = MaxMsgSize < (db_origin.get_size() - sent) ?
MaxMsgSize : (db_origin.get_size() - sent);
mq1.send( &static_cast<char*>(db_origin.get_address())[sent]
, bytes_to_send
, 0);
sent += bytes_to_send;
//Receive the fragment through mq2 to buffer_destiny
mq2.receive( &buffer_destiny[total_recvd]
, BufferSize - recvd
, recvd
, priority);
total_recvd += recvd;
//Check if we have received all the buffer
if(total_recvd == BufferSize){
@@ -168,14 +156,12 @@ bool test_serialize_db()
}
}
//The second buffer will contain a copy of the buffer1
//map so let's open Interprocess machinery in the second buffer
if(!db2.open(&buffer2[0], BufferSize)){
return false;
}
//The buffer will contain a copy of the original database
//so let's interpret the buffer with managed_external_buffer
managed_external_buffer db_destiny(open_only, &buffer_destiny[0], BufferSize);
//Let's find the map
std::pair<MyMap *, std::size_t> ret = db2.find<MyMap>("MyMap");
std::pair<MyMap *, std::size_t> ret = db_destiny.find<MyMap>("MyMap");
MyMap *map2 = ret.first;
//Check if we have found it
@@ -201,17 +187,14 @@ bool test_serialize_db()
}
//Destroy maps from db-s
db1.destroy_ptr(map1);
db2.destroy_ptr(map2);
db1.close();
db2.close();
db_origin.destroy_ptr(map1);
db_destiny.destroy_ptr(map2);
return true;
}
static const int MsgSize = 10;
static const int NumMsg = 10000;
static const int NumMsg = 1000;
static char msgsend [10];
static char msgrecv [10];

View File

@@ -1,6 +1,6 @@
//////////////////////////////////////////////////////////////////////////////
//
// (C) Copyright Ion Gaztañaga 2004-2006. Distributed under the Boost
// (C) Copyright Ion Gazta<EFBFBD>ga 2004-2006. 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)
//
@@ -25,7 +25,6 @@
#include "boost_interprocess_check.hpp"
#include "util.hpp"
#include <boost/thread/thread.hpp>
#include <boost/thread/xtime.hpp>
#include <iostream>
namespace boost { namespace interprocess { namespace test {
@@ -43,7 +42,7 @@ struct test_lock
// Test the lock's constructors.
{
lock_type lock(interprocess_mutex, boost::interprocess::dont_lock);
lock_type lock(interprocess_mutex, boost::interprocess::defer_lock);
BOOST_INTERPROCES_CHECK(!lock);
}
lock_type lock(interprocess_mutex);
@@ -73,7 +72,7 @@ struct test_trylock
BOOST_INTERPROCES_CHECK(lock ? true : false);
}
{
try_to_lock_type lock(interprocess_mutex, boost::interprocess::dont_lock);
try_to_lock_type lock(interprocess_mutex, boost::interprocess::defer_lock);
BOOST_INTERPROCES_CHECK(!lock);
}
try_to_lock_type lock(interprocess_mutex);
@@ -103,14 +102,14 @@ struct test_timedlock
// Test the lock's constructors.
{
// Construct and initialize an xtime for a fast time out.
boost::posix_time::ptime pt = delay(1, 0);
// Construct and initialize an ptime for a fast time out.
boost::posix_time::ptime pt = delay(1*BaseSeconds, 0);
timed_lock_type lock(interprocess_mutex, pt);
BOOST_INTERPROCES_CHECK(lock ? true : false);
}
{
timed_lock_type lock(interprocess_mutex, boost::interprocess::dont_lock);
timed_lock_type lock(interprocess_mutex, boost::interprocess::defer_lock);
BOOST_INTERPROCES_CHECK(!lock);
}
timed_lock_type lock(interprocess_mutex);
@@ -123,7 +122,7 @@ struct test_timedlock
BOOST_INTERPROCES_CHECK(lock ? true : false);
lock.unlock();
BOOST_INTERPROCES_CHECK(!lock);
boost::posix_time::ptime pt = delay(10, 0);
boost::posix_time::ptime pt = delay(10*BaseSeconds, 0);
BOOST_INTERPROCES_CHECK(lock.timed_lock(pt));
BOOST_INTERPROCES_CHECK(lock ? true : false);
}
@@ -143,8 +142,8 @@ struct test_recursive_lock
lock_type lock2(mx);
}
{
lock_type lock1(mx, dont_lock);
lock_type lock2(mx, dont_lock);
lock_type lock1(mx, defer_lock);
lock_type lock2(mx, defer_lock);
}
{
lock_type lock1(mx, try_to_lock);
@@ -152,7 +151,7 @@ struct test_recursive_lock
}
{
//This should always lock
boost::posix_time::ptime pt = delay(3);
boost::posix_time::ptime pt = delay(3*BaseSeconds);
lock_type lock1(mx, pt);
lock_type lock2(mx, pt);
}
@@ -168,7 +167,7 @@ void lock_and_sleep(void *arg, M &sm)
data<M> *pdata = (data<M> *) arg;
boost::interprocess::scoped_lock<M> l(sm);
if(pdata->m_secs){
boost::thread::sleep(xsecs(pdata->m_secs*BaseSeconds));
boost::thread::sleep(xsecs(pdata->m_secs));
}
else{
boost::thread::sleep(xsecs(3*BaseSeconds));
@@ -182,7 +181,7 @@ template<typename M>
void try_lock_and_sleep(void *arg, M &sm)
{
data<M> *pdata = (data<M> *) arg;
boost::interprocess::scoped_lock<M> l(sm, boost::interprocess::dont_lock);
boost::interprocess::scoped_lock<M> l(sm, boost::interprocess::defer_lock);
if (l.try_lock()){
boost::thread::sleep(xsecs(3*BaseSeconds));
++shared_val;
@@ -196,7 +195,7 @@ void timed_lock_and_sleep(void *arg, M &sm)
data<M> *pdata = (data<M> *) arg;
boost::posix_time::ptime pt(delay(pdata->m_secs));
boost::interprocess::scoped_lock<M>
l (sm, boost::interprocess::dont_lock);
l (sm, boost::interprocess::defer_lock);
if (l.timed_lock(pt)){
boost::thread::sleep(xsecs(3*BaseSeconds));
++shared_val;
@@ -293,8 +292,8 @@ void test_mutex_timed_lock()
pm2 = &m2;
}
data<M> d1(1, 3);
data<M> d2(2, 3);
data<M> d1(1, 3*BaseSeconds);
data<M> d2(2, 3*BaseSeconds);
// Locker one launches, holds the lock for 3*BaseSeconds seconds.
boost::thread tm1(thread_adapter<M>(&timed_lock_and_sleep, &d1, *pm1));

View File

@@ -0,0 +1,143 @@
//////////////////////////////////////////////////////////////////////////////
//
// (C) Copyright Ion Gaztañaga 2004-2006. 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.
//
//////////////////////////////////////////////////////////////////////////////
#include <boost/interprocess/detail/config_begin.hpp>
#include <boost/interprocess/detail/workaround.hpp>
#include <boost/interprocess/sync/named_condition.hpp>
#include <boost/interprocess/sync/named_mutex.hpp>
#include <boost/interprocess/sync/scoped_lock.hpp>
#include <boost/date_time/posix_time/ptime.hpp>
#include <boost/date_time/posix_time/posix_time_types.hpp>
#include <boost/lexical_cast.hpp>
#include "condition_test_template.hpp"
#include "named_creation_template.hpp"
struct condition_deleter
{
std::string name;
~condition_deleter()
{
if(name.empty())
boost::interprocess::named_condition::remove("named_condition");
else
boost::interprocess::named_condition::remove(name.c_str());
}
};
//This wrapper is necessary to have a default constructor
//in generic mutex_test_template functions
class named_condition_test_wrapper
: public condition_deleter, public boost::interprocess::named_condition
{
public:
named_condition_test_wrapper()
: boost::interprocess::named_condition
(boost::interprocess::open_or_create,
("test_cond" + boost::lexical_cast<std::string>(count)).c_str())
{
condition_deleter::name += "test_cond";
condition_deleter::name += boost::lexical_cast<std::string>(count);
++count;
}
~named_condition_test_wrapper()
{ --count; }
static int count;
};
int named_condition_test_wrapper::count = 0;
//This wrapper is necessary to have a common constructor
//in generic named_creation_template functions
class named_condition_creation_test_wrapper
: public condition_deleter, public boost::interprocess::named_condition
{
public:
named_condition_creation_test_wrapper(boost::interprocess::detail::create_only_t)
: boost::interprocess::named_condition
(boost::interprocess::create_only, "named_condition")
{}
named_condition_creation_test_wrapper(boost::interprocess::detail::open_only_t)
: boost::interprocess::named_condition
(boost::interprocess::open_only, "named_condition")
{}
named_condition_creation_test_wrapper(boost::interprocess::detail::open_or_create_t)
: boost::interprocess::named_condition
(boost::interprocess::open_or_create, "named_condition")
{}
};
struct mutex_deleter
{
std::string name;
~mutex_deleter()
{
if(name.empty())
boost::interprocess::named_mutex::remove("named_mutex");
else
boost::interprocess::named_mutex::remove(name.c_str());
}
};
//This wrapper is necessary to have a default constructor
//in generic mutex_test_template functions
class named_mutex_test_wrapper
: public mutex_deleter, public boost::interprocess::named_mutex
{
public:
named_mutex_test_wrapper()
: boost::interprocess::named_mutex
(boost::interprocess::open_or_create,
("test_mutex" + boost::lexical_cast<std::string>(count)).c_str())
{
mutex_deleter::name += "test_mutex";
mutex_deleter::name += boost::lexical_cast<std::string>(count);
++count;
}
~named_mutex_test_wrapper()
{ --count; }
static int count;
};
int named_mutex_test_wrapper::count = 0;
int main ()
{
try{
using namespace boost::interprocess;
//Remove previous mutexes and conditions
named_mutex::remove("test_mutex0");
named_condition::remove("test_cond0");
named_condition::remove("test_cond1");
named_condition::remove("named_condition");
named_mutex::remove("named_mutex");
test::test_named_creation<named_condition_creation_test_wrapper>();
test::do_test_condition<named_condition_test_wrapper
,named_mutex_test_wrapper>();
}
catch(std::exception &ex){
std::cout << ex.what() << std::endl;
return 1;
}
return 0;
}
#include <boost/interprocess/detail/config_end.hpp>

View File

@@ -73,7 +73,7 @@ static inline void test_named_creation()
std::cout << "dont_create_and_open<"
<< typeid(NamedResource).name() << ">" << std::endl;
dont_create_and_open<NamedResource>();
};
}
}}} //namespace boost { namespace interprocess { namespace test {
#endif //BOOST_INTERPROCESS_TEST_NAMED_RESOURCE_TEMPLATE_HEADER

View File

@@ -11,8 +11,6 @@
#include <boost/interprocess/detail/workaround.hpp>
#include <boost/interprocess/sync/named_mutex.hpp>
#include <boost/interprocess/sync/scoped_lock.hpp>
#include <boost/date_time/posix_time/ptime.hpp>
#include <boost/date_time/posix_time/posix_time_types.hpp>
#include "mutex_test_template.hpp"
#include "named_creation_template.hpp"

View File

@@ -19,7 +19,7 @@
struct deleter
{
~deleter()
{ boost::interprocess::named_mutex::remove("named_recursive_mutex"); }
{ boost::interprocess::named_recursive_mutex::remove("named_recursive_mutex"); }
};
//This wrapper is necessary to have a default constructor
@@ -60,7 +60,7 @@ int main ()
{
using namespace boost::interprocess;
try{
named_mutex::remove("named_recursive_mutex");
named_recursive_mutex::remove("named_recursive_mutex");
test::test_named_creation<named_mutex_creation_test_wrapper>();
test::test_all_lock<named_recursive_mutex_lock_test_wrapper>();
test::test_all_mutex<false, named_recursive_mutex_lock_test_wrapper>();

View File

@@ -1,6 +1,6 @@
//////////////////////////////////////////////////////////////////////////////
//
// (C) Copyright Ion Gaztañaga 2004-2006. Distributed under the Boost
// (C) Copyright Ion Gazta<EFBFBD>ga 2004-2006. 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)
//
@@ -10,6 +10,7 @@
#include <boost/interprocess/detail/config_begin.hpp>
#include <boost/interprocess/detail/workaround.hpp>
#include <boost/interprocess/sync/named_semaphore.hpp>
#include <boost/interprocess/sync/interprocess_semaphore.hpp>
#include <boost/interprocess/exceptions.hpp>
#include <boost/date_time/posix_time/posix_time_types.hpp>
#include "named_creation_template.hpp"
@@ -93,6 +94,7 @@ class recursive_named_semaphore_test_wrapper
int main ()
{
using namespace boost::interprocess;
try{
named_semaphore::remove(SemName);
test::test_named_creation<named_semaphore_test_wrapper>();

View File

@@ -0,0 +1,78 @@
//////////////////////////////////////////////////////////////////////////////
//
// (C) Copyright Ion Gaztañaga 2004-2006. 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.
//
//////////////////////////////////////////////////////////////////////////////
#include <boost/interprocess/detail/config_begin.hpp>
#include <boost/interprocess/detail/workaround.hpp>
#include "mutex_test_template.hpp"
#include "sharable_mutex_test_template.hpp"
#include "named_creation_template.hpp"
#include <boost/interprocess/sync/named_upgradable_mutex.hpp>
struct deleter
{
~deleter()
{ boost::interprocess::named_upgradable_mutex::remove("named_upgradable_mutex"); }
};
//This wrapper is necessary to have a default constructor
//in generic mutex_test_template functions
class named_upgradable_mutex_lock_test_wrapper
: public boost::interprocess::named_upgradable_mutex
{
public:
named_upgradable_mutex_lock_test_wrapper()
: boost::interprocess::named_upgradable_mutex
(boost::interprocess::open_or_create, "named_upgradable_mutex")
{}
};
//This wrapper is necessary to have a common constructor
//in generic named_creation_template functions
class named_upgradable_mutex_creation_test_wrapper
: public deleter, public boost::interprocess::named_upgradable_mutex
{
public:
named_upgradable_mutex_creation_test_wrapper
(boost::interprocess::detail::create_only_t)
: boost::interprocess::named_upgradable_mutex
(boost::interprocess::create_only, "named_upgradable_mutex")
{}
named_upgradable_mutex_creation_test_wrapper
(boost::interprocess::detail::open_only_t)
: boost::interprocess::named_upgradable_mutex
(boost::interprocess::open_only, "named_upgradable_mutex")
{}
named_upgradable_mutex_creation_test_wrapper
(boost::interprocess::detail::open_or_create_t)
: boost::interprocess::named_upgradable_mutex
(boost::interprocess::open_or_create, "named_upgradable_mutex")
{}
};
int main ()
{
try{
using namespace boost::interprocess;
named_upgradable_mutex::remove("named_upgradable_mutex");
test::test_named_creation<named_upgradable_mutex_creation_test_wrapper>();
test::test_all_lock<named_upgradable_mutex_lock_test_wrapper>();
test::test_all_mutex<true, named_upgradable_mutex_lock_test_wrapper>();
test::test_all_sharable_mutex<true, named_upgradable_mutex_lock_test_wrapper>();
}
catch(std::exception &ex){
std::cout << ex.what() << std::endl;
return 1;
}
return 0;
}
#include <boost/interprocess/detail/config_end.hpp>

View File

@@ -54,7 +54,7 @@ int main ()
//Named new capable shared mem allocator
//Create shared memory
wmanaged_shared_memory::remove(shMemName);
shared_memory_object::remove(shMemName);
wmanaged_shared_memory segment(create_only, shMemName, memsize);
segment.reserve_named_objects(100);

View File

@@ -24,7 +24,7 @@ my_shared_objects_t;
int main ()
{
//Create shared memory
my_shared_objects_t::remove("MySharedMemory");
shared_memory_object::remove("MySharedMemory");
my_shared_objects_t segment
(create_only,
"MySharedMemory",//segment name

View File

@@ -40,7 +40,6 @@ void PrintContents(const Container &cont, const char *contName)
} //namespace interprocess{
} //namespace boost{
#include <boost/interprocess/detail/config_end.hpp>
#endif //#ifndef BOOST_PRINTCONTAINER_HPP

View File

@@ -54,7 +54,7 @@ int main ()
const int max = 100;
//Named new capable shared mem allocator
wmanaged_shared_memory::remove(shMemName);
shared_memory_object::remove(shMemName);
wmanaged_shared_memory segment(create_only, shMemName, memsize);
//Shared memory allocator must be always be initialized

View File

@@ -1,356 +0,0 @@
// Copyright (C) 2001-2003
// William E. Kempf
//
// Permission to use, copy, modify, distribute and sell this software
// and its documentation for any purpose is hereby granted without fee,
// provided that the above copyright notice appear in all copies and
// that both that copyright notice and this permission notice appear
// in supporting documentation. William E. Kempf makes no representations
// about the suitability of this software for any purpose.
// It is provided "as is" without express or implied warranty.
//////////////////////////////////////////////////////////////////////////////
//
// (C) Copyright Ion Gaztañaga 2005-2006. 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.
//
//////////////////////////////////////////////////////////////////////////////
#include <boost/interprocess/detail/config_begin.hpp>
#include <boost/interprocess/detail/workaround.hpp>
/*
#include <boost/thread/thread.hpp>
#include <boost/thread/xtime.hpp>
#include <boost/date_time/posix_time/ptime.hpp>
#include <boost/interprocess/sync/read_write_mutex.hpp>
//#include <boost/interprocess/sync/shared_read_write_lock.hpp>
#include <iostream>
//#include <cassert>
#include <assert.h>
namespace {
int shared_val = 0;
//boost::interprocess::xtime xsecs(int secs)
boost::xtime xsecs(int secs)
{
boost::xtime ret;
boost::xtime_get(&ret, boost::TIME_UTC);
ret.sec += secs;
return ret;
// boost::xtime aux;
// boost::interprocess::xtime ret;
// boost::xtime_get(&aux, boost::TIME_UTC);
// ret.sec = aux.sec;
// ret.nsec = aux.nsec;
// ret.sec += secs;
// return ret;
}
template <typename RW>
class thread_adapter
{
public:
thread_adapter(void (*func)(void*,RW &), void* param1,RW &param2)
: _func(func), _param1(param1) ,_param2(param2){ }
void operator()() const { _func(_param1, _param2); }
private:
void (*_func)(void*, RW &);
void* _param1;
RW& _param2;
};
template <typename RW>
struct data
{
data(int id, RW &m, int secs=0)
: m_id(id), m_value(-1), m_secs(secs), m_rw(m)
{
}
int m_id;
int m_value;
int m_secs;
RW& m_rw; // Reader/Writer interprocess_mutex
};
// plain_writer exercises the "infinite" lock for each
// read_write_mutex type.
template<typename RW>
void plain_writer(void *arg,RW &rw)
{
data<RW> *pdata = (data<RW> *) arg;
// cout << "-->W" << pdata->m_id << "\n";
typename RW::scoped_read_write_lock l(rw, boost::interprocess::read_write_lock_state::write_locked);
boost::thread::sleep(xsecs(3));
shared_val += 10;
pdata->m_value = shared_val;
}
template<typename RW>
void plain_reader(void *arg,RW &rw)
{
data<RW> *pdata = (data<RW> *) arg;
typename RW::scoped_read_write_lock l(rw, boost::interprocess::read_write_lock_state::read_locked);
pdata->m_value = shared_val;
}
template<typename RW>
void try_writer(void *arg,RW &rw)
{
data<RW> *pdata = (data<RW> *) arg;
// cout << "-->W" << pdata->m_id << "\n";
typename RW::scoped_try_read_write_lock l(rw, boost::interprocess::read_write_lock_state::unlocked);
if (l.try_write_lock())
{
boost::thread::sleep(xsecs(3));
shared_val += 10;
pdata->m_value = shared_val;
}
}
template<typename RW>
void try_reader(void *arg,RW &rw)
{
data<RW> *pdata = (data<RW> *) arg;
typename RW::scoped_try_read_write_lock l(rw, boost::interprocess::read_write_lock_state::unlocked);
if (l.try_read_lock())
{
pdata->m_value = shared_val;
}
}
template<typename RW>
void timed_writer(void *arg,RW &rw)
{
data<RW> *pdata = (data<RW> *) arg;
boost::interprocess::xtime xt;
boost::xtime aux;
aux = xsecs(pdata->m_secs);
xt.sec = aux.sec;
xt.nsec = aux.nsec;
typename RW::scoped_timed_read_write_lock l
(rw,boost::interprocess::read_write_lock_state::unlocked);
if (l.timed_write_lock(xt))
{
boost::thread::sleep(xsecs(3));
shared_val += 10;
pdata->m_value = shared_val;
}
}
template<typename RW>
void timed_reader(void *arg,RW &rw)
{
data<RW> *pdata = (data<RW> *) arg;
boost::interprocess::xtime xt;
boost::xtime aux;
aux = xsecs(pdata->m_secs);
xt.sec = aux.sec;
xt.nsec = aux.nsec;
typename RW::scoped_timed_read_write_lock l
(rw,boost::interprocess::read_write_lock_state::unlocked);
if (l.timed_read_lock(xt))
{
pdata->m_value = shared_val;
}
}
template<typename RW>
void test_plain_read_write_mutex(RW &rw)
{
shared_val = 0;
data<RW> r1(1,rw);
data<RW> r2(2,rw);
data<RW> w1(1,rw);
data<RW> w2(2,rw);
// Writer one launches, holds the lock for 3 seconds.
boost::thread tw1(thread_adapter<RW>(plain_writer,&w1,rw));
// Writer two launches, tries to grab the lock, "clearly"
// after Writer one will already be holding it.
boost::thread::sleep(xsecs(1));
boost::thread tw2(thread_adapter<RW>(plain_writer,&w2,rw));
// Reader one launches, "clearly" after writer two, and "clearly"
// while writer 1 still holds the lock
boost::thread::sleep(xsecs(1));
boost::thread tr1(thread_adapter<RW>(plain_reader,&r1,rw));
boost::thread tr2(thread_adapter<RW>(plain_reader,&r2,rw));
tr2.join();
tr1.join();
tw2.join();
tw1.join();
if (rw.policy() == boost::interprocess::read_write_scheduling_policy::writer_priority)
{
assert(w1.m_value == 10);
assert(w2.m_value == 20);
assert(r1.m_value == 20); // Readers get in after 2nd writer
assert(r2.m_value == 20);
}
else if (rw.policy() == boost::interprocess::read_write_scheduling_policy::reader_priority)
{
assert(w1.m_value == 10);
assert(w2.m_value == 20);
assert(r1.m_value == 10); // Readers get in before 2nd writer
assert(r2.m_value == 10);
}
else if (rw.policy() == boost::interprocess::read_write_scheduling_policy::alternating_many_reads)
{
assert(w1.m_value == 10);
assert(w2.m_value == 20);
assert(r1.m_value == 10); // Readers get in before 2nd writer
assert(r2.m_value == 10);
}
else if (rw.policy() == boost::interprocess::read_write_scheduling_policy::alternating_single_read)
{
assert(w1.m_value == 10);
assert(w2.m_value == 20);
// One Reader gets in before 2nd writer, but we can't tell
// which reader will "win", so just check their sum.
assert((r1.m_value + r2.m_value == 30));
}
}
template<typename RW>
void test_try_read_write_mutex(RW &rw)
{
data<RW> r1(1,rw);
data<RW> w1(2,rw);
data<RW> w2(3,rw);
// We start with some specialized tests for "try" behavior
shared_val = 0;
// Writer one launches, holds the lock for 3 seconds.
boost::thread tw1(thread_adapter<RW>(try_writer,&w1,rw));
// Reader one launches, "clearly" after writer #1 holds the lock
// and before it releases the lock.
boost::thread::sleep(xsecs(1));
boost::thread tr1(thread_adapter<RW>(try_reader,&r1,rw));
// Writer two launches in the same timeframe.
boost::thread tw2(thread_adapter<RW>(try_writer,&w2,rw));
tw2.join();
tr1.join();
tw1.join();
assert(w1.m_value == 10);
assert(r1.m_value == -1); // Try would return w/o waiting
assert(w2.m_value == -1); // Try would return w/o waiting
// We finish by repeating the plain tests with the try lock
// This is important to verify that try locks are proper read_write_mutexes as
// well.
test_plain_read_write_mutex(rw);
}
template<typename RW>
void test_timed_read_write_mutex(RW &rw)
{
data<RW> r1(1,rw,1);
data<RW> r2(2,rw,3);
data<RW> w1(3,rw,3);
data<RW> w2(4,rw,1);
// We begin with some specialized tests for "timed" behavior
shared_val = 0;
// Writer one will hold the lock for 3 seconds.
boost::thread tw1(thread_adapter<RW>(timed_writer,&w1,rw));
boost::thread::sleep(xsecs(1));
// Writer two will "clearly" try for the lock after the readers
// have tried for it. Writer will wait up 1 second for the lock.
// This write will fail.
boost::thread tw2(thread_adapter<RW>(timed_writer,&w2,rw));
// Readers one and two will "clearly" try for the lock after writer
// one already holds it. 1st reader will wait 1 second, and will fail
// to get the lock. 2nd reader will wait 3 seconds, and will get
// the lock.
boost::thread tr1(thread_adapter<RW>(timed_reader,&r1,rw));
boost::thread tr2(thread_adapter<RW>(timed_reader,&r2,rw));
tw1.join();
tr1.join();
tr2.join();
tw2.join();
assert(w1.m_value == 10);
assert(r1.m_value == -1);
assert(r2.m_value == 10);
assert(w2.m_value == -1);
// We follow by repeating the try tests with the timed lock.
// This is important to verify that timed locks are proper try locks as
// well
test_try_read_write_mutex(rw);
}
} // namespace
int main ()
{
int i;
for(i = (int) boost::interprocess::read_write_scheduling_policy::writer_priority;
i <= (int) boost::interprocess::read_write_scheduling_policy::alternating_single_read;
i++)
{
boost::interprocess::shared_read_write_mutex plain_rw
(static_cast<boost::interprocess::read_write_scheduling_policy::
read_write_scheduling_policy_enum>(i));
boost::interprocess::shared_try_read_write_mutex try_rw
(static_cast<boost::interprocess::read_write_scheduling_policy::
read_write_scheduling_policy_enum>(i));
boost::interprocess::shared_timed_read_write_mutex timed_rw
(static_cast<boost::interprocess::read_write_scheduling_policy::
read_write_scheduling_policy_enum>(i));
std::cout << "plain test, sp=" << i << "\n";
test_plain_read_write_mutex(plain_rw);
std::cout << "try test, sp=" << i << "\n";
test_try_read_write_mutex(try_rw);
std::cout << "timed test, sp=" << i << "\n";
test_timed_read_write_mutex(timed_rw);
}
return 0;
}
*/
#include <boost/interprocess/detail/config_end.hpp>

View File

@@ -30,7 +30,7 @@ struct test_wait
// Test the lock's constructors.
{
wait_type lock(interprocess_mutex, boost::interprocess::dont_lock);
wait_type lock(interprocess_mutex, boost::interprocess::defer_lock);
BOOST_INTERPROCES_CHECK(!lock);
}
wait_type lock(interprocess_mutex);
@@ -58,7 +58,7 @@ struct test_try_wait
BOOST_INTERPROCES_CHECK(lock ? true : false);
}
{
try_to_wait_type lock(interprocess_mutex, boost::interprocess::dont_lock);
try_to_wait_type lock(interprocess_mutex, boost::interprocess::defer_lock);
BOOST_INTERPROCES_CHECK(!lock);
}
try_to_wait_type lock(interprocess_mutex);
@@ -93,7 +93,7 @@ struct test_timed_wait
BOOST_INTERPROCES_CHECK(lock ? true : false);
}
{
timed_wait_type lock(interprocess_mutex, boost::interprocess::dont_lock);
timed_wait_type lock(interprocess_mutex, boost::interprocess::defer_lock);
BOOST_INTERPROCES_CHECK(!lock);
}
timed_wait_type lock(interprocess_mutex);
@@ -123,8 +123,8 @@ struct test_recursive_lock
wait_type lock2(mx);
}
{
wait_type lock1(mx, dont_lock);
wait_type lock2(mx, dont_lock);
wait_type lock1(mx, defer_lock);
wait_type lock2(mx, defer_lock);
}
{
wait_type lock1(mx, try_to_lock);
@@ -156,7 +156,7 @@ template<typename P>
void try_wait_and_sleep(void *arg, P &sm)
{
data<P> *pdata = (data<P> *) arg;
boost::interprocess::scoped_lock<P> l(sm, boost::interprocess::dont_lock);
boost::interprocess::scoped_lock<P> l(sm, boost::interprocess::defer_lock);
if (l.try_lock()){
boost::thread::sleep(xsecs(3*BaseSeconds));
++shared_val;
@@ -170,7 +170,7 @@ void timed_wait_and_sleep(void *arg, P &sm)
data<P> *pdata = (data<P> *) arg;
boost::posix_time::ptime pt(delay(pdata->m_secs));
boost::interprocess::scoped_lock<P>
l (sm, boost::interprocess::dont_lock);
l (sm, boost::interprocess::defer_lock);
if (l.timed_lock(pt)){
boost::thread::sleep(xsecs(3*BaseSeconds));
++shared_val;

View File

@@ -65,7 +65,7 @@ int set_test ()
const int max = 100;
//Create shared memory
ManagedSharedMemory::remove(shMemName);
shared_memory_object::remove(shMemName);
ManagedSharedMemory segment(create_only, shMemName, memsize);
segment.reserve_named_objects(100);

View File

@@ -1,275 +0,0 @@
// Copyright (C) 2001-2003
// William E. Kempf
//
// Permission to use, copy, modify, distribute and sell this software
// and its documentation for any purpose is hereby granted without fee,
// provided that the above copyright notice appear in all copies and
// that both that copyright notice and this permission notice appear
// in supporting documentation. William E. Kempf makes no representations
// about the suitability of this software for any purpose.
// It is provided "as is" without express or implied warranty.
//////////////////////////////////////////////////////////////////////////////
//
// (C) Copyright Ion Gaztañaga 2005-2006. 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.
//
//////////////////////////////////////////////////////////////////////////////
#include <boost/interprocess/detail/config_begin.hpp>
#include <boost/interprocess/detail/workaround.hpp>
#include <boost/thread/thread.hpp>
#include <boost/thread/xtime.hpp>
#include <boost/date_time/posix_time/ptime.hpp>
#include <boost/interprocess/sync/interprocess_sharable_mutex.hpp>
#include <boost/interprocess/sync/sharable_lock.hpp>
#include <boost/interprocess/sync/scoped_lock.hpp>
#include <iostream>
#include <assert.h>
#include "util.hpp"
namespace {
template<typename SM>
void plain_exclusive(void *arg, SM &sm)
{
data<SM> *pdata = (data<SM> *) arg;
boost::interprocess::scoped_lock<SM> l(sm);
boost::thread::sleep(xsecs(3*BaseSeconds));
shared_val += 10;
pdata->m_value = shared_val;
}
template<typename SM>
void plain_shared(void *arg, SM &sm)
{
data<SM> *pdata = (data<SM> *) arg;
boost::interprocess::sharable_lock<SM> l(sm);
pdata->m_value = shared_val;
}
template<typename SM>
void try_exclusive(void *arg, SM &sm)
{
data<SM> *pdata = (data<SM> *) arg;
boost::interprocess::scoped_lock<SM> l(sm, boost::interprocess::dont_lock);
if (l.try_lock()){
boost::thread::sleep(xsecs(3*BaseSeconds));
shared_val += 10;
pdata->m_value = shared_val;
}
}
template<typename SM>
void try_shared(void *arg, SM &sm)
{
data<SM> *pdata = (data<SM> *) arg;
boost::interprocess::sharable_lock<SM> l(sm, boost::interprocess::dont_lock);
if (l.try_lock()){
pdata->m_value = shared_val;
}
}
template<typename SM>
void timed_exclusive(void *arg, SM &sm)
{
data<SM> *pdata = (data<SM> *) arg;
boost::posix_time::ptime pt(delay(pdata->m_secs));
boost::interprocess::scoped_lock<SM>
l (sm, boost::interprocess::dont_lock);
if (l.timed_lock(pt)){
boost::thread::sleep(xsecs(3*BaseSeconds));
shared_val += 10;
pdata->m_value = shared_val;
}
}
template<typename SM>
void timed_shared(void *arg, SM &sm)
{
data<SM> *pdata = (data<SM> *) arg;
boost::posix_time::ptime pt(delay(pdata->m_secs));
boost::interprocess::sharable_lock<SM>
l(sm, boost::interprocess::dont_lock);
if (l.timed_lock(pt)){
pdata->m_value = shared_val;
}
}
template<typename SM>
void test_plain_sharable_mutex(SM &sm)
{
shared_val = 0;
data<SM> s1(1,sm);
data<SM> s2(2,sm);
data<SM> e1(1,sm);
data<SM> e2(2,sm);
// Writer one launches, holds the lock for 3*BaseSeconds seconds.
boost::thread tw1(thread_adapter<SM>(plain_exclusive,&e1,sm));
// Writer two launches, tries to grab the lock, "clearly"
// after Writer one will already be holding it.
boost::thread::sleep(xsecs(1*BaseSeconds));
boost::thread tw2(thread_adapter<SM>(plain_exclusive,&e2,sm));
// Reader one launches, "clearly" after writer two, and "clearly"
// while writer 1 still holds the lock
boost::thread::sleep(xsecs(1*BaseSeconds));
boost::thread tr1(thread_adapter<SM>(plain_shared,&s1,sm));
boost::thread tr2(thread_adapter<SM>(plain_shared,&s2,sm));
tr2.join();
tr1.join();
tw2.join();
tw1.join();
if (sm.get_policy() == boost::interprocess::interprocess_sharable_mutex::exclusive_priority)
{
assert(e1.m_value == 10);
assert(e2.m_value == 20);
assert(s1.m_value == 20); // Readers get in after 2nd writer
assert(s2.m_value == 20);
}
else if (sm.get_policy() == boost::interprocess::interprocess_sharable_mutex::sharable_priority)
{
assert(e1.m_value == 10);
assert(e2.m_value == 20);
assert(s1.m_value == 10); // Readers get in before 2nd writer
assert(s2.m_value == 10);
}
else if (sm.get_policy() == boost::interprocess::interprocess_sharable_mutex::no_priority){
//We can only assure that the first will be the writer
assert(e1.m_value == 10);
//A that we will execute all
assert(s1.m_value == 20 || s2.m_value == 20 || e2.m_value == 20);
}
/*
else if (sm.get_policy() == boost::interprocess::read_write_scheduling_policy::alternating_many_reads)
{
assert(e1.m_value == 10);
assert(e2.m_value == 20);
assert(s1.m_value == 10); // Readers get in before 2nd writer
assert(s2.m_value == 10);
}
else if (sm.get_policy() == boost::interprocess::interprocess_sharable_mutex::alternating_priority)
{
assert(e1.m_value == 10);
assert(e2.m_value == 20);
// One Reader gets in before 2nd writer, but we can't tell
// which reader will "win", so just check their sum.
assert((s1.m_value + s2.m_value == 30));
}*/
}
template<typename SM>
void test_try_sharable_mutex(SM &sm)
{
data<SM> s1(1,sm);
data<SM> e1(2,sm);
data<SM> e2(3,sm);
// We start with some specialized tests for "try" behavior
shared_val = 0;
// Writer one launches, holds the lock for 3*BaseSeconds seconds.
boost::thread tw1(thread_adapter<SM>(try_exclusive,&e1,sm));
// Reader one launches, "clearly" after writer #1 holds the lock
// and before it releases the lock.
boost::thread::sleep(xsecs(1*BaseSeconds));
boost::thread tr1(thread_adapter<SM>(try_shared,&s1,sm));
// Writer two launches in the same timeframe.
boost::thread tw2(thread_adapter<SM>(try_exclusive,&e2,sm));
tw2.join();
tr1.join();
tw1.join();
assert(e1.m_value == 10);
assert(s1.m_value == -1); // Try would return w/o waiting
assert(e2.m_value == -1); // Try would return w/o waiting
}
template<typename SM>
void test_timed_sharable_mutex(SM &sm)
{
data<SM> s1(1,sm,1*BaseSeconds);
data<SM> s2(2,sm,3*BaseSeconds);
data<SM> e1(3,sm,3*BaseSeconds);
data<SM> e2(4,sm,1*BaseSeconds);
// We begin with some specialized tests for "timed" behavior
shared_val = 0;
// Writer one will hold the lock for 3*BaseSeconds seconds.
boost::thread tw1(thread_adapter<SM>(timed_exclusive,&e1,sm));
boost::thread::sleep(xsecs(1*BaseSeconds));
// Writer two will "clearly" try for the lock after the readers
// have tried for it. Writer will wait up 1*BaseSeconds seconds for the lock.
// This write will fail.
boost::thread tw2(thread_adapter<SM>(timed_exclusive,&e2,sm));
// Readers one and two will "clearly" try for the lock after writer
// one already holds it. 1st reader will wait 1*BaseSeconds seconds, and will fail
// to get the lock. 2nd reader will wait 3*BaseSeconds seconds, and will get
// the lock.
boost::thread tr1(thread_adapter<SM>(timed_shared,&s1,sm));
boost::thread tr2(thread_adapter<SM>(timed_shared,&s2,sm));
tw1.join();
tr1.join();
tr2.join();
tw2.join();
assert(e1.m_value == 10);
assert(s1.m_value == -1);
assert(s2.m_value == 10);
assert(e2.m_value == -1);
}
} // namespace
int main ()
{
using namespace boost::interprocess;
int i;
const int NumTest = 3;
for(i = 0;
i < static_cast<int>(interprocess_sharable_mutex::max_priority);
++i)
{
int j;
interprocess_sharable_mutex sh_mutex
(static_cast<interprocess_sharable_mutex::sharable_mutex_policy>(i));
for(j = 0; j < NumTest; ++j){
std::cout << "plain test, policy=" << i << " retry=" << j << "\n";
test_plain_sharable_mutex(sh_mutex);
}
for(j = 0; j < NumTest; ++j){
std::cout << "try test, policy=" << i << " retry=" << j << "\n";
test_try_sharable_mutex(sh_mutex);
}
for(j = 0; j < NumTest; ++j){
std::cout << "timed test, policy=" << i << " retry=" << j << "\n";
test_timed_sharable_mutex(sh_mutex);
}
}
return 0;
}
#include <boost/interprocess/detail/config_end.hpp>

View File

@@ -60,7 +60,7 @@ template<typename SM>
void try_exclusive(void *arg, SM &sm)
{
data<SM> *pdata = (data<SM> *) arg;
boost::interprocess::scoped_lock<SM> l(sm, boost::interprocess::dont_lock);
boost::interprocess::scoped_lock<SM> l(sm, boost::interprocess::defer_lock);
if (l.try_lock()){
boost::thread::sleep(xsecs(3*BaseSeconds));
shared_val += 10;
@@ -72,7 +72,7 @@ template<typename SM>
void try_shared(void *arg, SM &sm)
{
data<SM> *pdata = (data<SM> *) arg;
boost::interprocess::sharable_lock<SM> l(sm, boost::interprocess::dont_lock);
boost::interprocess::sharable_lock<SM> l(sm, boost::interprocess::defer_lock);
if (l.try_lock()){
if(pdata->m_secs){
boost::thread::sleep(xsecs(pdata->m_secs*BaseSeconds));
@@ -87,7 +87,7 @@ void timed_exclusive(void *arg, SM &sm)
data<SM> *pdata = (data<SM> *) arg;
boost::posix_time::ptime pt(delay(pdata->m_secs));
boost::interprocess::scoped_lock<SM>
l (sm, boost::interprocess::dont_lock);
l (sm, boost::interprocess::defer_lock);
if (l.timed_lock(pt)){
boost::thread::sleep(xsecs(3*BaseSeconds));
shared_val += 10;
@@ -101,7 +101,7 @@ void timed_shared(void *arg, SM &sm)
data<SM> *pdata = (data<SM> *) arg;
boost::posix_time::ptime pt(delay(pdata->m_secs));
boost::interprocess::sharable_lock<SM>
l(sm, boost::interprocess::dont_lock);
l(sm, boost::interprocess::defer_lock);
if (l.timed_lock(pt)){
if(pdata->m_secs){
boost::thread::sleep(xsecs(pdata->m_secs*BaseSeconds));

View File

@@ -23,27 +23,28 @@ int main ()
const std::size_t FileSize = 99999*2;
{
//Remove shared memory
shared_memory_mapping::remove("my_file");
shared_memory_object::remove("my_file");
//Create shared memory and file mapping
shared_memory_mapping mapping(create_only, "my_file", shared_memory_mapping::rw_mode);
shared_memory_object mapping(create_only, "my_file", shared_memory_object::read_write);
mapping.truncate(FileSize);
}
{
//Create a file mapping
shared_memory_mapping mapping(open_only, "my_file", shared_memory_mapping::rw_mode);
shared_memory_object mapping(open_only, "my_file", shared_memory_object::read_write);
//Create two mapped regions, one half of the file each
mapped_region region (mapping
,mapped_region::read_write
,0
,FileSize/2
,shared_memory_mapping::rw_mode
,0);
mapped_region region2(mapping, FileSize/2
mapped_region region2(mapping
,mapped_region::read_write
,FileSize/2
,FileSize - FileSize/2
,shared_memory_mapping::rw_mode
,0);
//Fill two regions with a pattern
@@ -65,9 +66,9 @@ int main ()
//See if the pattern is correct in the file using two mapped regions
{
//Create a file mapping
shared_memory_mapping mapping(open_only, "my_file", shared_memory_mapping::rw_mode);
mapped_region region(mapping, 0, FileSize/2, shared_memory_mapping::rw_mode,0);
mapped_region region2(mapping, FileSize/2, 0/*FileSize - FileSize/2*/, shared_memory_mapping::rw_mode,0);
shared_memory_object mapping(open_only, "my_file", shared_memory_object::read_write);
mapped_region region(mapping, mapped_region::read_write, 0, FileSize/2, 0);
mapped_region region2(mapping, mapped_region::read_write, FileSize/2, 0/*FileSize - FileSize/2*/, 0);
unsigned char *checker = (unsigned char*)region.get_address();
//Check pattern
@@ -95,14 +96,11 @@ int main ()
//Now check the pattern mapping a single read only mapped_region
{
//Create a file mapping
shared_memory_mapping mapping(open_only, "my_file", shared_memory_mapping::ro_mode);
shared_memory_object mapping(open_only, "my_file", shared_memory_object::read_only);
//Create a single regions, mapping all the file
mapped_region region (mapping
,0
,0
,shared_memory_mapping::ro_mode
,0);
,mapped_region::read_only);
//Check pattern
unsigned char *pattern = static_cast<unsigned char*>(region.get_address());

View File

@@ -13,9 +13,8 @@
#include <boost/interprocess/shared_memory.hpp>
#include <boost/interprocess/exceptions.hpp>
#include "named_creation_template.hpp"
#include <memory.h> //for memset
#include <string.h> //for strcmp
#include <iostream> //for strcmp
#include <cstring> //for strcmp, memset
#include <iostream> //for cout
static const std::size_t ShmSize = 1000;
static const char * ShmName = "shared_memory";
@@ -24,7 +23,7 @@ struct shared_memory_eraser
{
~shared_memory_eraser()
{
boost::interprocess::shared_memory_mapping::remove(ShmName);
boost::interprocess::shared_memory_object::remove(ShmName);
}
};
@@ -55,12 +54,12 @@ int main ()
{
using namespace boost::interprocess;
try{
shared_memory_mapping::remove(ShmName);
shared_memory_object::remove(ShmName);
test::test_named_creation<shared_memory_creation_test_wrapper>();
//Create and get name, size and address
{
shared_memory_mapping::remove(ShmName);
shared_memory_object::remove(ShmName);
shared_memory shm1(create_only, ShmName, ShmSize);
//Compare size
@@ -68,12 +67,12 @@ int main ()
return 1;
//Compare name
if(strcmp(shm1.get_name(), ShmName) != 0){
if(std::strcmp(shm1.get_name(), ShmName) != 0){
return 1;
}
//Overwrite all memory
memset(shm1.get_address(), 0, ShmSize);
std::memset(shm1.get_address(), 0, ShmSize);
}
}
catch(std::exception &ex){

View File

@@ -55,7 +55,7 @@ int simple_test()
typedef shared_ptr<base_class, base_class_allocator, base_deleter_t> base_shared_ptr;
typedef weak_ptr<base_class, base_class_allocator, base_deleter_t> base_weak_ptr;
managed_shared_memory::remove("shm_name");
shared_memory_object::remove("shm_name");
managed_shared_memory shmem(create_only, "shm_name", 10000);
{
@@ -131,8 +131,8 @@ int string_shared_ptr_vector_insertion_test()
typedef vector<string_weak_ptr_t, string_weak_ptr_allocator_t>
string_weak_ptr_vector_t;
//A shared memory front-end
managed_shared_memory::remove("shm_name");
//A shared memory managed memory classes
shared_memory_object::remove("shm_name");
managed_shared_memory shmem(create_only, "shm_name", 20000);
{
@@ -408,7 +408,7 @@ int basic_shared_ptr_test()
typedef weak_ptr<Y, v_allocator_t, y_deleter_t> y_weak_ptr;
managed_shared_memory::remove("shm_name");
shared_memory_object::remove("shm_name");
managed_shared_memory shmem(create_only, "shm_name", 10000);
{
v_allocator_t v_allocator (shmem.get_segment_manager());

View File

@@ -61,7 +61,7 @@ int main ()
const int max = 100;
//Create shared memory
managed_shared_memory::remove(shMemName);
shared_memory_object::remove(shMemName);
managed_shared_memory segment(create_only, shMemName, memsize);
segment.reserve_named_objects(100);

View File

@@ -17,8 +17,8 @@
#include <string>
#include <vector>
#include <algorithm>
#include <string.h>
#include <stdio.h>
#include <cstring>
#include <cstdio>
#include <cstddef>
#include <new>
@@ -42,12 +42,12 @@ struct StringEqual
{
bool operator ()(const StdString &stdstring, const ShmString &shmstring) const
{
return strcmp(stdstring.c_str(), shmstring.c_str()) == 0;
return std::strcmp(stdstring.c_str(), shmstring.c_str()) == 0;
}
bool operator ()(const ShmString &shmstring, const StdString &stdstring) const
{
return strcmp(stdstring.c_str(), shmstring.c_str()) == 0;
return std::strcmp(stdstring.c_str(), shmstring.c_str()) == 0;
}
};
@@ -68,7 +68,7 @@ bool Print(ShmStringVector *shmvect, StdStringVector *stdvect)
std::cout << *beg << std::endl;
}
std::cout << "stdvect" << static_cast<unsigned int>(stdvect->size()) << std::endl;
std::cout << "stdvect: " << static_cast<unsigned int>(stdvect->size()) << std::endl;
for(StdStringVector::iterator beg = stdvect->begin(),
end = stdvect->end();
beg != end; ++beg){
@@ -82,7 +82,7 @@ int main ()
const int MaxSize = 100;
//Create shared memory
managed_shared_memory::remove("MySharedMemory");
shared_memory_object::remove("MySharedMemory");
managed_shared_memory segment
(create_only,
"MySharedMemory",//segment name
@@ -107,15 +107,18 @@ int main ()
for(i = 0; i < MaxSize; ++i){
auxShmString = "String";
auxStdString = "String";
sprintf(buffer, "%i", i);
std::sprintf(buffer, "%i", i);
auxShmString += buffer;
auxStdString += buffer;
shmStringVect->push_back(auxShmString);
stdStringVect->push_back(auxStdString);
}
if(!CheckEqual(shmStringVect, stdStringVect)) return 1;
if(!CheckEqual(shmStringVect, stdStringVect)){
Print(shmStringVect, stdStringVect);
return 1;
}
ShmString shm_swapper(segment.get_segment_manager());
StdString std_swapper;
shm_swapper.swap(auxShmString);

View File

@@ -63,5 +63,7 @@ int main ()
,MyStdMultiSet>();
}
#include <boost/interprocess/detail/config_end.hpp>

View File

@@ -15,7 +15,7 @@
#include <boost/interprocess/detail/workaround.hpp>
#include <boost/interprocess/offset_ptr.hpp>
#include <boost/interprocess/smart_ptr/unique_ptr_emulation.hpp>
#include <boost/interprocess/smart_ptr/unique_ptr.hpp>
#include <boost/interprocess/managed_shared_memory.hpp>
#include <boost/interprocess/allocators/allocator.hpp>
#include <boost/interprocess/containers/list.hpp>
@@ -24,7 +24,6 @@
using namespace boost::interprocess;
class MyClass
{
public:
@@ -32,7 +31,6 @@ class MyClass
{}
};
//Deleter. Takes a pointer to the segment manager which
//has a function to delete the object from the shared memory
//segment.
@@ -50,8 +48,8 @@ struct MyDeleter
offset_ptr<managed_shared_memory::segment_manager> m_mngr;
};
typedef boost_ext::unique_ptr<MyClass, MyDeleter> my_unique_ptr_class;
typedef unique_ptr<MyClass, MyDeleter> my_unique_ptr_class;
/*
//Explicit instantiation of shared memory set
template class set <my_unique_ptr_class
,std::less<my_unique_ptr_class>
@@ -76,7 +74,7 @@ typedef list<my_unique_ptr_class
,allocator <my_unique_ptr_class
,managed_shared_memory::segment_manager>
> MyList;
*/
//This explicit instantiation fails
//Because, for example, this iterator copy expression fails:
// *target = *source;
@@ -90,7 +88,7 @@ typedef list<my_unique_ptr_class
int main()
{
//Create managed shared memory
managed_shared_memory::remove("mysegment");
shared_memory_object::remove("mysegment");
managed_shared_memory segment(create_only, "mysegment", 1000);
//Create to unique_ptr using dynamic allocation
@@ -105,11 +103,11 @@ int main()
//Test some copy constructors
my_unique_ptr_class my_ptr3(0, segment.get_segment_manager());
my_unique_ptr_class my_ptr4(boost_ext::move(my_ptr3));
my_unique_ptr_class my_ptr4(move(my_ptr3));
//This does not compile
//my_unique_ptr_class my_ptr4 (my_ptr3);
// my_unique_ptr_class my_ptr4 (my_ptr3);
/*
//Construct a list and fill
MyList list(segment.get_segment_manager());
@@ -146,7 +144,7 @@ int main()
assert(set.rbegin()->get() == ptr1);
assert(set.begin()->get() == ptr2);
}
*/
return 0;
}

View File

@@ -12,13 +12,162 @@
#include "mutex_test_template.hpp"
#include "sharable_mutex_test_template.hpp"
#include <boost/interprocess/sync/interprocess_upgradable_mutex.hpp>
#include <boost/interprocess/sync/scoped_lock.hpp>
#include <boost/interprocess/sync/sharable_lock.hpp>
#include <boost/interprocess/sync/upgradable_lock.hpp>
#include <boost/date_time/posix_time/posix_time_types.hpp>
#include <boost/date_time/posix_time/ptime.hpp>
#include "util.hpp"
int main ()
{
using namespace boost::interprocess;
test::test_all_lock<interprocess_upgradable_mutex>();
test::test_all_mutex<true, interprocess_upgradable_mutex>();
test::test_all_sharable_mutex<true, interprocess_upgradable_mutex>();
//Test lock transition
{
typedef interprocess_upgradable_mutex Mutex;
Mutex mut;
Mutex mut2;
//Conversions to scoped_lock
{
scoped_lock<Mutex> lock(mut);
scoped_lock<Mutex> e_lock(move(lock));
lock.swap(move(e_lock));
}
{
scoped_lock<Mutex> lock(mut);
scoped_lock<Mutex> e_lock(mut2);
e_lock = move(lock);
}
{
upgradable_lock<Mutex> u_lock(mut);
//This calls unlock_upgradable_and_lock()
scoped_lock<Mutex> e_lock(move(u_lock));
}
{
upgradable_lock<Mutex> u_lock(mut);
//This calls unlock_upgradable_and_lock()
scoped_lock<Mutex> e_lock(mut2);
scoped_lock<Mutex> moved(move(u_lock));
e_lock = move(moved);
}
{
upgradable_lock<Mutex> u_lock(mut);
//This calls try_unlock_upgradable_and_lock()
scoped_lock<Mutex> e_lock(move(u_lock), try_to_lock);
}
{
upgradable_lock<Mutex> u_lock(mut);
//This calls try_unlock_upgradable_and_lock()
scoped_lock<Mutex> e_lock(mut2);
scoped_lock<Mutex> moved(move(u_lock), try_to_lock);
e_lock = move(moved);
}
{
boost::posix_time::ptime t = test::delay(100);
upgradable_lock<Mutex> u_lock(mut);
//This calls timed_unlock_upgradable_and_lock()
scoped_lock<Mutex> e_lock(move(u_lock), t);
}
{
boost::posix_time::ptime t = test::delay(100);
upgradable_lock<Mutex> u_lock(mut);
//This calls timed_unlock_upgradable_and_lock()
scoped_lock<Mutex> e_lock(mut2);
scoped_lock<Mutex> moved(move(u_lock), t);
e_lock = move(moved);
}
{
sharable_lock<Mutex> s_lock(mut);
//This calls try_unlock_sharable_and_lock()
scoped_lock<Mutex> e_lock(move(s_lock), try_to_lock);
}
{
sharable_lock<Mutex> s_lock(mut);
//This calls try_unlock_sharable_and_lock()
scoped_lock<Mutex> e_lock(mut2);
scoped_lock<Mutex> moved(move(s_lock), try_to_lock);
e_lock = move(moved);
}
//Conversions to upgradable_lock
{
upgradable_lock<Mutex> lock(mut);
upgradable_lock<Mutex> u_lock(move(lock));
lock.swap(move(u_lock));
}
{
upgradable_lock<Mutex> lock(mut);
upgradable_lock<Mutex> u_lock(mut2);
upgradable_lock<Mutex> moved(move(lock));
u_lock = move(moved);
}
{
sharable_lock<Mutex> s_lock(mut);
//This calls unlock_sharable_and_lock_upgradable()
upgradable_lock<Mutex> u_lock(move(s_lock), try_to_lock);
}
{
sharable_lock<Mutex> s_lock(mut);
//This calls unlock_sharable_and_lock_upgradable()
upgradable_lock<Mutex> u_lock(mut2);
upgradable_lock<Mutex> moved(move(s_lock), try_to_lock);
u_lock = move(moved);
}
{
scoped_lock<Mutex> e_lock(mut);
//This calls unlock_and_lock_upgradable()
upgradable_lock<Mutex> u_lock(move(e_lock));
}
{
scoped_lock<Mutex> e_lock(mut);
//This calls unlock_and_lock_upgradable()
upgradable_lock<Mutex> u_lock(mut2);
upgradable_lock<Mutex> moved(move(e_lock));
u_lock = move(moved);
}
//Conversions to sharable_lock
{
sharable_lock<Mutex> lock(mut);
sharable_lock<Mutex> s_lock(move(lock));
lock.swap(move(s_lock));
}
{
sharable_lock<Mutex> lock(mut);
sharable_lock<Mutex> s_lock(mut2);
sharable_lock<Mutex> moved(move(lock));
s_lock = move(moved);
}
{
upgradable_lock<Mutex> u_lock(mut);
//This calls unlock_upgradable_and_lock_sharable()
sharable_lock<Mutex> s_lock(move(u_lock));
}
{
upgradable_lock<Mutex> u_lock(mut);
//This calls unlock_upgradable_and_lock_sharable()
sharable_lock<Mutex> s_lock(mut2);
sharable_lock<Mutex> moved(move(u_lock));
s_lock = move(moved);
}
{
scoped_lock<Mutex> e_lock(mut);
//This calls unlock_and_lock_sharable()
sharable_lock<Mutex> s_lock(move(e_lock));
}
{
scoped_lock<Mutex> e_lock(mut);
//This calls unlock_and_lock_sharable()
sharable_lock<Mutex> s_lock(mut2);
sharable_lock<Mutex> moved(move(e_lock));
s_lock = move(moved);
}
}
return 0;
}

View File

@@ -57,13 +57,12 @@ int main ()
static char static_buffer[memsize];
//Named new capable user mem allocator
wmanaged_external_buffer user_buffer;
wmanaged_external_buffer user_buffer(create_only, static_buffer, memsize);
//Named new capable heap mem allocator
wmanaged_heap_memory heap_buffer(memsize);
//Initialize memory
user_buffer.create(static_buffer, memsize);
user_buffer.reserve_named_objects(100);
heap_buffer.reserve_named_objects(100);
@@ -167,7 +166,6 @@ int main ()
if(!CheckEqual(userlist, stdlist, heaplist)) return 1;
user_buffer.destroy<MyUserList>(L"MyUserList");
user_buffer.close();
delete stdlist;
//Fill heap buffer until is full
@@ -180,10 +178,6 @@ int main ()
std::size_t heap_list_size = heaplist->size();
//Try to grow the buffer
//Copy heap buffer to another
const char *insert_beg = detail::char_ptr_cast(heap_buffer.get_address());
const char *insert_end = insert_beg + heap_buffer.get_size();
@@ -192,12 +186,15 @@ int main ()
heap_buffer.destroy<MyHeapList>(L"MyHeapList");
//Resize copy buffer
grow_copy.resize(memsize*2);
//Open Interprocess machinery in the new buffer
user_buffer.open(&grow_copy[0], memsize);
//Open Interprocess machinery in the new managed external buffer
wmanaged_external_buffer user_buffer2(open_only, &grow_copy[0], memsize);
//Expand old Interprocess machinery to the new size
user_buffer.grow(memsize);
user_buffer2.grow(memsize);
//Get a pointer to the full list
userlist = user_buffer.find<MyUserList>(L"MyHeapList").first;
userlist = user_buffer2.find<MyUserList>(L"MyHeapList").first;
if(!userlist){
return 1;
}
@@ -216,7 +213,7 @@ int main ()
return 1;
}
user_buffer.destroy_ptr(userlist);
user_buffer2.destroy_ptr(userlist);
return 0;
}

View File

@@ -1,6 +1,6 @@
//////////////////////////////////////////////////////////////////////////////
//
// (C) Copyright Ion Gaztañaga 2004-2006. Distributed under the Boost
// (C) Copyright Ion Gazta<EFBFBD>ga 2004-2006. 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)
//
@@ -20,12 +20,6 @@
#ifndef BOOST_INTERPROCESS_TEST_UTIL_HEADER
#define BOOST_INTERPROCESS_TEST_UTIL_HEADER
/*
#include <boost/thread/xtime.hpp>
#include <boost/thread/interprocess_mutex.hpp>
#include <boost/thread/interprocess_condition.hpp>
#include <boost/thread/thread.hpp>
*/
#include <boost/interprocess/sync/interprocess_mutex.hpp>
#include <boost/interprocess/sync/interprocess_condition.hpp>
@@ -58,8 +52,8 @@ inline boost::posix_time::ptime delay(int secs, int msecs=0, int nsecs = 0)
using namespace boost::posix_time;
int count = static_cast<int>(double(nsecs)*
(double(time_duration::ticks_per_second())/double(1000000000.0)));
return microsec_clock::universal_time() +
boost::posix_time::time_duration(0, 0, secs, count);
boost::posix_time::ptime cur = microsec_clock::universal_time();
return cur += boost::posix_time::time_duration(0, 0, secs, count);
}
inline bool in_range(const boost::posix_time::ptime& xt, int secs=1)

View File

@@ -81,7 +81,7 @@ int main ()
//Compare several shared memory vector operations with std::vector
{
//Create shared memory
my_managed_shared_memory::remove(shMemName);
shared_memory_object::remove(shMemName);
my_managed_shared_memory segment(create_only, shMemName, Memsize);
segment.reserve_named_objects(100);

View File

@@ -6,7 +6,7 @@
#include <boost/interprocess/streams/bufferstream.hpp>
#include <sstream>
//#include <strstream>
#include <string.h>
#include <cstring>
#include <vector>
#include <iostream>
#include <boost/date_time/posix_time/ptime.hpp>
@@ -37,7 +37,7 @@ static int vectorstream_test()
std_stringstream << "testline: " << i << std::endl;
}
if(strcmp(my_stringstream.vector().c_str(), std_stringstream.str().c_str()) != 0){
if(std::strcmp(my_stringstream.vector().c_str(), std_stringstream.str().c_str()) != 0){
return 1;
}
@@ -67,7 +67,7 @@ static int vectorstream_test()
}
//Add final null to form a c string
myvector.push_back(0);
if(strcmp(&(my_vectorstream.vector()[0]), std_stringstream.str().c_str()) != 0){
if(std::strcmp(&(my_vectorstream.vector()[0]), std_stringstream.str().c_str()) != 0){
return 1;
}
myvector.pop_back();
@@ -94,7 +94,7 @@ static int vectorstream_test()
my_stringstream << "testline: " << i << std::endl;
std_stringstream << "testline: " << i << std::endl;
}
if(strcmp(my_stringstream.vector().c_str(), std_stringstream.str().c_str()) != 0){
if(std::strcmp(my_stringstream.vector().c_str(), std_stringstream.str().c_str()) != 0){
assert(0); return 1;
}
for(int i = 0; i < 100; ++i){