11using namespace Microsoft::VisualStudio::CppUnitTestFramework;
18 TEST_CLASS_INITIALIZE (ClassInitialize)
20 Logger::WriteMessage (
"SharedMemoryTest class initialize.\n");
23 TEST_CLASS_CLEANUP (ClassCleanup)
25 Logger::WriteMessage (
"SharedMemoryTest class cleanup.\n");
28 TEST_METHOD_INITIALIZE (MethodInitialize)
30 Logger::WriteMessage (
"SharedMemoryTest method initialize.\n");
33 TEST_METHOD_CLEANUP (MethodCleanup)
35 Logger::WriteMessage (
"SharedMemoryTest method cleanup.\n");
38 TEST_METHOD (SharedMemoryTest1)
45 auto threadFunc1 = [](LPVOID lpvParam)->DWORD
49 Assert::IsTrue (shmem.
Open (_T (
"SHMEM")), _T(
"SharedMemory::Open() failed.\n"));
50 Assert::IsTrue (mutex.
Open (_T (
"MUTEX")), _T(
"Mutex::Open() failed.\n"));
52 LPVOID lpvMem = shmem.
Mapped ();
53 Assert::IsNotNull (lpvMem, _T(
"SharedMemory::Mapped() failed.\n"));
55 for (
int i = 0; i < 1000; i++)
58 FillMemory (lpvMem, 10240,
'1');
59 Logger::WriteMessage (
"1");
64 Assert::IsTrue (shmem.
Unmapped (), _T(
"SharedMemory::Unmapped() failed.\n"));
69 auto threadFunc2 = [](LPVOID lpvParam)->DWORD
73 Assert::IsTrue (shmem.
Open (_T (
"SHMEM")), _T(
"SharedMemory::Open() failed.\n"));
74 Assert::IsTrue (mutex.
Open (_T (
"MUTEX")), _T(
"Mutex::Open() failed.\n"));
76 LPVOID lpvMem = shmem.
Mapped ();
77 Assert::IsNotNull (lpvMem, _T(
"SharedMemory::Mapped() failed.\n"));
79 for (
int i = 0; i < 1000; i++)
82 FillMemory (lpvMem, 10240,
'2');
83 Logger::WriteMessage (
"2");
88 Assert::IsTrue (shmem.
Unmapped (), _T(
"SharedMemory::Unmapped() failed.\n"));
93 Assert::IsTrue (mutex.
Create (_T (
"MUTEX")), _T(
"Mutex.Create() failed.\n"));
94 Assert::IsTrue (shmem.
Create (_T (
"SHMEM"), 10240), _T(
"SharedMemory::Create() failed.\n"));
96 Assert::IsTrue (thread1.
Create (threadFunc1), _T(
"Thread::Create() failed.\n"));
97 Assert::IsTrue (thread2.
Create (threadFunc2), _T(
"Thread::Create() failed.\n"));
99 HANDLE hThreads[2] = { NULL, NULL };
102 WaitForMultipleObjects (2, hThreads, TRUE, INFINITE);
ミューテックスに関するWindowsAPIを集約したクラス
共有メモリに関するWindowsAPIを集約したクラス
スレッドに関するWindowsAPIを集約したクラス
HANDLE APIENTRY GetHandle() const
継承先はこの関数でハンドルを取得します。
ミューテックスに関するWindowsAPIを集約したクラス
BOOL APIENTRY Release() const
ミューテックスを解放します。
BOOL APIENTRY Open(LPCTSTR lpctszName)
ミューテックスをオープンします。
BOOL APIENTRY Create(LPCTSTR lpctszName)
ミューテックスを作成します。
共有メモリに関するWindowsAPIを集約したクラス
BOOL APIENTRY Create(LPCTSTR lpctszName, DWORD dwSize)
共有メモリの作成
BOOL APIENTRY Unmapped()
共有メモリのマッピング終了
LPVOID APIENTRY Mapped()
共有メモリのマッピング開始
BOOL APIENTRY Open(LPCTSTR lpctszName)
共有メモリのオープン
スレッドに関するWindowsAPIを集約したクラス
BOOL APIENTRY Create(PTHREAD_START_ROUTINE function=NULL, LPVOID lpvParam=NULL, DWORD dwCreationFlag=0)
スレッドを作成します。
DWORD APIENTRY Wait(DWORD dwWaitTime=INFINITE) const
シグナル状態になるとブロックを解除します。