Operations Dev/writech
-
MutexOperations Dev/writech 2010. 12. 10. 18:24
// Example02_Mutex.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다. // #include "stdafx.h" #include "Windows.h" #include //#include #include #include using namespace std; unsigned int WINAPI writeCharacter( LPVOID param); string g_string; int const MAX_THREAD = 5; HANDLE g_mutexHandle; int _tmain(int argc, _TCHAR* argv[]) { //가용 공간을 미리 예약해 놓는 부분, //g_string.reserve( MAX_THREAD * 1000 +1 ); g_mutexHandle = ::Cre..
-
SemaphoreOperations Dev/writech 2010. 12. 10. 18:23
// Example03_Semaphore.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다. // #include "stdafx.h" #include #include #include #include using namespace std; unsigned int WINAPI writeCharacter(LPVOID param); string g_string; int const MAX_THREAD = 5; HANDLE g_semaphoreHandle; int _tmain(int argc, _TCHAR* argv[]) { g_semaphoreHandle = ::CreateSemaphore(NULL,1, 1 , NULL); g_string.reserve(MAX_THREAD * 1000 +1); //가용공간 ..
-
CriticalSectionOperations Dev/writech 2010. 12. 10. 18:22
// Example04_CriticalSection.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다. // CriticalSection은 유저모드(재귀 스핀락)인데 오늘은 일반 락 #include "stdafx.h" #include #include #include #include using namespace std; unsigned int WINAPI writeCharacter(LPVOID param); string g_string; int const MAX_THREAD = 5; CRITICAL_SECTION g_criticalSection; int _tmain(int argc, _TCHAR* argv[]) { ::InitializeCriticalSection(&g_criticalSection)..
-
SpinLockOperations Dev/writech 2010. 12. 10. 18:22
// Example05_SpinLock.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다. // 커널모르게 돌리면 유저모드 #include "stdafx.h" #include #include #include #include using namespace std; unsigned int WINAPI writeCharacter(LPVOID param); string g_string; int const MAX_THREAD = 5; bool g_isLocked = false; int _tmain(int argc, _TCHAR* argv[]) { DWORD threadIDs[MAX_THREAD]; HANDLE threadHandles[MAX_THREAD]; char alphas[MAX_THREAD]; for..
-
SpinLock2Operations Dev/writech 2010. 12. 10. 18:10
// Example06_SpinLock2.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다. // #include "stdafx.h" #include #include #include #include using namespace std; unsigned int WINAPI writeCharacter(LPVOID param); string g_string; int const MAX_THREAD = 5; long g_key =1; int _tmain(int argc, _TCHAR* argv[]) { DWORD threadIDs[MAX_THREAD]; HANDLE threadHandles[MAX_THREAD]; char alphas[MAX_THREAD]; for(int i =0; i
-
SimpleConcurrencyOperations Dev/writech 2010. 12. 10. 17:53
// Example01_Simple.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다. // #include "stdafx.h" #include #include #include #include using namespace std; unsigned int WINAPI writeCharacter(LPVOID param); string g_string; int const MAX_THREAD = 5; int _tmain(int argc, _TCHAR* argv[]) { g_string.reserve(MAX_THREAD * 1000 +1); //가용공간 예약부분 //char ch = 'a' ; DWORD threadIDs[MAX_THREAD]; HANDLE threadHandles[MAX_THREAD]; ..