mirror of
https://github.com/boostorg/interprocess.git
synced 2026-01-19 04:12:13 +00:00
First complete documentation version
[SVN r34819]
This commit is contained in:
@@ -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>
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
134
proj/vc7ide/doc_anonymous_conditionA.vcproj
Normal file
134
proj/vc7ide/doc_anonymous_conditionA.vcproj
Normal 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>
|
||||
134
proj/vc7ide/doc_anonymous_conditionB.vcproj
Normal file
134
proj/vc7ide/doc_anonymous_conditionB.vcproj
Normal 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>
|
||||
134
proj/vc7ide/doc_anonymous_mutexA.vcproj
Normal file
134
proj/vc7ide/doc_anonymous_mutexA.vcproj
Normal 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>
|
||||
134
proj/vc7ide/doc_anonymous_mutexB.vcproj
Normal file
134
proj/vc7ide/doc_anonymous_mutexB.vcproj
Normal 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>
|
||||
134
proj/vc7ide/doc_anonymous_semaphoreA.vcproj
Normal file
134
proj/vc7ide/doc_anonymous_semaphoreA.vcproj
Normal 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>
|
||||
134
proj/vc7ide/doc_anonymous_semaphoreB.vcproj
Normal file
134
proj/vc7ide/doc_anonymous_semaphoreB.vcproj
Normal 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>
|
||||
134
proj/vc7ide/doc_anonymous_upgradable_mutexA.vcproj
Normal file
134
proj/vc7ide/doc_anonymous_upgradable_mutexA.vcproj
Normal 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>
|
||||
134
proj/vc7ide/doc_anonymous_upgradable_mutexB.vcproj
Normal file
134
proj/vc7ide/doc_anonymous_upgradable_mutexB.vcproj
Normal 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>
|
||||
@@ -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
|
||||
@@ -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
|
||||
134
proj/vc7ide/doc_message_queueA.vcproj
Normal file
134
proj/vc7ide/doc_message_queueA.vcproj
Normal 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>
|
||||
134
proj/vc7ide/doc_message_queueB.vcproj
Normal file
134
proj/vc7ide/doc_message_queueB.vcproj
Normal 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>
|
||||
134
proj/vc7ide/doc_named_conditionA.vcproj
Normal file
134
proj/vc7ide/doc_named_conditionA.vcproj
Normal 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>
|
||||
134
proj/vc7ide/doc_named_conditionB.vcproj
Normal file
134
proj/vc7ide/doc_named_conditionB.vcproj
Normal 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>
|
||||
134
proj/vc7ide/doc_named_mutex.vcproj
Normal file
134
proj/vc7ide/doc_named_mutex.vcproj
Normal 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>
|
||||
134
proj/vc7ide/doc_shared_memory.vcproj
Normal file
134
proj/vc7ide/doc_shared_memory.vcproj
Normal 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>
|
||||
@@ -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>
|
||||
|
||||
134
proj/vc7ide/named_condition_test.vcproj
Normal file
134
proj/vc7ide/named_condition_test.vcproj
Normal 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>
|
||||
134
proj/vc7ide/named_upgradable_mutex.vcproj
Normal file
134
proj/vc7ide/named_upgradable_mutex.vcproj
Normal 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>
|
||||
135
proj/vc7ide/shared_memory_mappable_test.vcproj
Normal file
135
proj/vc7ide/shared_memory_mappable_test.vcproj
Normal 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>
|
||||
@@ -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)
|
||||
//
|
||||
|
||||
@@ -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
|
||||
|
||||
60
test/Jamfile
60
test/Jamfile
@@ -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 ]
|
||||
;
|
||||
}
|
||||
@@ -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 ] ;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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>
|
||||
|
||||
394
test/condition_test_template.hpp
Normal file
394
test/condition_test_template.hpp
Normal 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>
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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)
|
||||
//
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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];
|
||||
|
||||
|
||||
@@ -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));
|
||||
|
||||
143
test/named_condition_test.cpp
Normal file
143
test/named_condition_test.cpp
Normal 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>
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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>();
|
||||
|
||||
@@ -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>();
|
||||
|
||||
78
test/named_upgradable_mutex_test.cpp
Normal file
78
test/named_upgradable_mutex_test.cpp
Normal 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>
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ¶m2)
|
||||
: _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>
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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>
|
||||
@@ -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));
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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){
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -63,5 +63,7 @@ int main ()
|
||||
,MyStdMultiSet>();
|
||||
}
|
||||
|
||||
|
||||
|
||||
#include <boost/interprocess/detail/config_end.hpp>
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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){
|
||||
|
||||
Reference in New Issue
Block a user