From 1fd49a571338b6c946bb05dcdf59ec1468df5c50 Mon Sep 17 00:00:00 2001
From: SWK <sungwk82@diteam.co.kr>
Date: 목, 22 12월 2022 12:31:43 +0900
Subject: [PATCH] ongoing50 #4403 CF AOI Reveiw TACT 지연 개선 1. 일정 시간 유지 신호 처리 시 동기화로 인한 불합리 개선 - 일정 시간 유지 필요 시 스래드풀 작업큐를 이용하여 루프처리 방식으로 변경 - 유지 신호 처리 중 출력 신호 발생 시 작업큐에 등록하여 유지 신호와 결합하여 출력 처리 2. FDC 보고 항목 중 SW 버전 체크 루프 불합리 개선 - 프로그램 시작 시 연동 프로그램 버전 체크 간 실행되지 않는 프로그램이 있는 경우 무한 루프 발생 - 무한 루프로 인한 CPU 점유 상승->루프 중간 Sleep추가 및 코드 간소화 3. 로그 메시지에 시간 ms단위 추가(황만수SM 작업 내역 병합)

---
 ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp |  140 +++++++++++++++++++++++++---------------------
 1 files changed, 76 insertions(+), 64 deletions(-)

diff --git a/ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp b/ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp
index e88e79b..223a7d1 100644
--- a/ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp
+++ b/ReviewHistory/ReveiwHistory/DitGlassRawServer.cpp
@@ -15,6 +15,9 @@
 
 CDitGlassRawServer::~CDitGlassRawServer(void)
 {
+	delete m_pGlassRawData;
+	delete m_pGlassRawInfo;
+
 	if (m_hMapBasicInfo!=NULL)
 	{
 		::UnmapViewOfFile(m_hMapBasicInfo);
@@ -91,37 +94,40 @@
 
 BOOL CDitGlassRawServer::CreateGlassRawInfo()
 {
-	if(m_hMapBasicInfo == NULL)
-	{
-		BOOL bCreateMem = TRUE;
-
-		m_hMapBasicInfo = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
-			, 0, sizeof(_grmDitGlassRawInfo), SHAREDMEMNAME_BASICINFO);
-
-		if (::GetLastError() == ERROR_ALREADY_EXISTS)
-		{
-			m_hMapBasicInfo = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_BASICINFO);
-			bCreateMem = FALSE;
-		}
-
-		if (m_hMapBasicInfo)
-		{
-			m_pGlassRawInfo = (_grmDitGlassRawInfo*)::MapViewOfFile(m_hMapBasicInfo, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(_grmDitGlassRawInfo));
-		}
-
-		if(m_hMapBasicInfo == NULL || m_pGlassRawInfo == NULL)
-		{
-			if (m_hMapBasicInfo!=NULL)
-			{
-				::UnmapViewOfFile(m_hMapBasicInfo);
-				m_pGlassRawInfo = NULL;
-			}
-			m_pGlassRawInfo = NULL;
-			return FALSE;
-		}
+// 	if(m_hMapBasicInfo == NULL)
+// 	{
+// 		BOOL bCreateMem = TRUE;
+// 
+// 		m_hMapBasicInfo = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
+// 			, 0, sizeof(_grmDitGlassRawInfo), SHAREDMEMNAME_BASICINFO);
+// 
+// 		if (::GetLastError() == ERROR_ALREADY_EXISTS)
+// 		{
+// 			m_hMapBasicInfo = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_BASICINFO);
+// 			bCreateMem = FALSE;
+// 		}
+// 
+// 		if (m_hMapBasicInfo)
+// 		{
+// 			m_pGlassRawInfo = (_grmDitGlassRawInfo*)::MapViewOfFile(m_hMapBasicInfo, FILE_MAP_ALL_ACCESS, 0, 0, sizeof(_grmDitGlassRawInfo));
+// 		}
+// 
+// 		if(m_hMapBasicInfo == NULL || m_pGlassRawInfo == NULL)
+// 		{
+// 			if (m_hMapBasicInfo!=NULL)
+// 			{
+// 				::UnmapViewOfFile(m_hMapBasicInfo);
+// 				m_pGlassRawInfo = NULL;
+// 			}
+// 			m_pGlassRawInfo = NULL;
+// 			return FALSE;
+// 		}
 
 		//0으로 초기화
-		if(bCreateMem && m_pGlassRawInfo)
+		//if(bCreateMem && m_pGlassRawInfo)
+		//_grmDitGlassRawInfo SemiServer;
+	m_pGlassRawInfo = new _grmDitGlassRawInfo;
+		if (m_pGlassRawInfo)
 		{
 			ZeroMemory(m_pGlassRawInfo,sizeof(_grmDitGlassRawInfo));
 			
@@ -135,7 +141,7 @@
 			int bytealign = m_pGlassRawInfo->m_nSizeOfGlassData%4;
 		}
 		
-	}
+	//}
 
 	
 
@@ -144,41 +150,47 @@
 
 BOOL CDitGlassRawServer::CreateGlassRawData()
 {
-	int nGlassRawSharedSize = (int)(m_pGlassRawInfo->m_nGlassRawDataSize);
-
-	if(m_hMapGlassData == NULL)
-	{
-		BOOL bCreateMem = TRUE;
-
-		m_hMapGlassData = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
-			, 0, nGlassRawSharedSize, SHAREDMEMNAME_GLASSDATA);
-
-		if (::GetLastError() == ERROR_ALREADY_EXISTS)
-		{
-			m_hMapGlassData = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_GLASSDATA);
-			bCreateMem = FALSE;
-		}
-
-		if (m_hMapGlassData)
-		{
-			m_pGlassRawData = (char*)::MapViewOfFile(m_hMapGlassData, FILE_MAP_ALL_ACCESS, 0, 0, nGlassRawSharedSize);
-		}
-
-		if(m_hMapGlassData == NULL || m_pGlassRawData == NULL)
-		{
-			if (m_hMapGlassData != NULL)
-			{
-				::UnmapViewOfFile(m_hMapGlassData);
-				m_pGlassRawData = NULL;
-			}
-			m_pGlassRawData = NULL;
-			return FALSE;
-		}
-
-		//0으로 초기화
-		if(bCreateMem && m_pGlassRawData) ZeroMemory(m_pGlassRawData,sizeof(char)*nGlassRawSharedSize);
-	}
+ 	int nGlassRawSharedSize = (int)(m_pGlassRawInfo->m_nGlassRawDataSize);
+// 
+// 	if(m_hMapGlassData == NULL)
+// 	{
+// 		BOOL bCreateMem = TRUE;
+// 
+// 		m_hMapGlassData = ::CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE
+// 			, 0, nGlassRawSharedSize, SHAREDMEMNAME_GLASSDATA);
+// 
+// 		if (::GetLastError() == ERROR_ALREADY_EXISTS)
+// 		{
+// 			m_hMapGlassData = ::OpenFileMapping(FILE_MAP_ALL_ACCESS,FALSE,SHAREDMEMNAME_GLASSDATA);
+// 			bCreateMem = FALSE;
+// 		}
+// 
+// 		if (m_hMapGlassData)
+// 		{
+// 			m_pGlassRawData = (char*)::MapViewOfFile(m_hMapGlassData, FILE_MAP_ALL_ACCESS, 0, 0, nGlassRawSharedSize);
+// 		}
+// 
+// 		if(m_hMapGlassData == NULL || m_pGlassRawData == NULL)
+// 		{
+// 			if (m_hMapGlassData != NULL)
+// 			{
+// 				::UnmapViewOfFile(m_hMapGlassData);
+// 				m_pGlassRawData = NULL;
+// 			}
+// 			m_pGlassRawData = NULL;
+// 			return FALSE;
+// 		}
+// 
+// 		//0으로 초기화
+// 		if(bCreateMem && m_pGlassRawData) ZeroMemory(m_pGlassRawData,sizeof(char)*nGlassRawSharedSize);
+// 	}
 	
+
+	 //0으로 초기화
+	m_pGlassRawData = new char[nGlassRawSharedSize];
+ 	if(m_pGlassRawData) 
+		ZeroMemory(m_pGlassRawData,sizeof(char)*nGlassRawSharedSize);
+
 	m_pGlassData  = (_grmGlassData*)&m_pGlassRawData[m_pGlassRawInfo->m_nGlassDataPoint];
 	m_pBlockData  = (_grmBlockData*)&m_pGlassRawData[m_pGlassRawInfo->m_nBlockDataPoint];
 	m_pCellData   = (_grmCellData*)&m_pGlassRawData[m_pGlassRawInfo->m_nCellDataPoint];

--
Gitblit v1.9.3