Explorar el Código

criticalsection with mult-processor

lihz hace 8 años
padre
commit
a00d93e74a
Se han modificado 8 ficheros con 17 adiciones y 17 borrados
  1. 2 2
      MysqlConnPool.cpp
  2. 1 1
      QueueStrManager.cpp
  3. 4 1
      QueueStrManager.h
  4. 1 1
      SyncTime/SyncManager.cpp
  5. 6 10
      YAServerDlg.cpp
  6. 0 1
      YAServerDlg.h
  7. 1 1
      classdef.cpp
  8. 2 0
      constdef.h

+ 2 - 2
MysqlConnPool.cpp

@@ -12,8 +12,8 @@ CMysqlConnPool::CMysqlConnPool()
 
 	m_hMaintanceThread = CreateEvent(NULL, TRUE, FALSE, _T("DataConnPool"));
 	// »®¶¨ÁÙ½çÇø
-	InitializeCriticalSection(&m_csIdleConnList);
-	InitializeCriticalSection(&m_csBusyConnList);
+	InitializeCriticalSectionAndSpinCount(&m_csIdleConnList, MAXCRITICALSECTIONSPINCOUNT);
+	InitializeCriticalSectionAndSpinCount(&m_csBusyConnList, MAXCRITICALSECTIONSPINCOUNT);
 }
 
 

+ 1 - 1
QueueStrManager.cpp

@@ -5,7 +5,7 @@
 QueueStrManager::QueueStrManager(void)
 {
 	m_pfunc = NULL;
-	InitializeCriticalSection(&m_csQueueList);
+	InitializeCriticalSectionAndSpinCount(&m_csQueueList, MAXCRITICALSECTIONSPINCOUNT);
 }
 
 

+ 4 - 1
QueueStrManager.h

@@ -1,4 +1,7 @@
 #pragma once
+
+#include "constdef.h"
+
 class QueueStrManager
 {
 	typedef DWORD (WINAPI *PFCALLBACK)(LPVOID lparam);
@@ -15,7 +18,7 @@ public:
 	QueueStrManager(int c, int l, PFCALLBACK func ): m_max_couter(c), m_max_length(l), m_couter(0), m_length(0), m_pfunc(func)
 	{
 		m_chr = new char[m_max_length];
-		InitializeCriticalSection(&m_csQueueList);
+		InitializeCriticalSectionAndSpinCount(&m_csQueueList, MAXCRITICALSECTIONSPINCOUNT);
 	};
 	~QueueStrManager(void);
 	void AddString(const char * chr);

+ 1 - 1
SyncTime/SyncManager.cpp

@@ -10,7 +10,7 @@ HostServer::SyncManager::SyncManager()
 
 void HostServer::SyncManager::init()
 {
-	InitializeCriticalSection(&m_csSyncTime);
+	InitializeCriticalSectionAndSpinCount(&m_csSyncTime, 4000);
 	//InitializeCriticalSection(&m_csCalcLiner);
     _anchors.swap(unordered_map<unsigned long long, Position>());
 	//_syncTimeMsgs.clear();

+ 6 - 10
YAServerDlg.cpp

@@ -621,13 +621,12 @@ void CYAServerDlg::init_param()
 	g_exit = false;
 	umpRootSyncNum.swap(unordered_map<DWORD, WORD>());
 
-	InitializeCriticalSection(&m_csWriteLog);
-	InitializeCriticalSection(&m_csRefreshList);	
-	InitializeCriticalSection(&m_csRemoveSocket);
-	InitializeCriticalSection(&m_csParseDataServer);
-	InitializeCriticalSection(&m_csAddDist);
-	InitializeCriticalSection(&m_csSyncTime);
-	InitializeCriticalSection(&m_csCallInfo);
+	InitializeCriticalSectionAndSpinCount(&m_csWriteLog, MAXCRITICALSECTIONSPINCOUNT);
+	InitializeCriticalSectionAndSpinCount(&m_csRefreshList, MAXCRITICALSECTIONSPINCOUNT);	
+	InitializeCriticalSectionAndSpinCount(&m_csRemoveSocket, MAXCRITICALSECTIONSPINCOUNT);
+	InitializeCriticalSectionAndSpinCount(&m_csParseDataServer, MAXCRITICALSECTIONSPINCOUNT);
+	InitializeCriticalSectionAndSpinCount(&m_csSyncTime, MAXCRITICALSECTIONSPINCOUNT);
+	InitializeCriticalSectionAndSpinCount(&m_csCallInfo, MAXCRITICALSECTIONSPINCOUNT);
 
 	//´ÓÅäÖÃÖжÁÈ¡(regedit)
 	load_param_from_ini();
@@ -676,7 +675,6 @@ void CYAServerDlg::stop_and_exit()
 	DeleteCriticalSection(&m_csParseDataServer);
 	DeleteCriticalSection(&m_csRemoveSocket);
 	DeleteCriticalSection(&m_csRefreshList);
-	DeleteCriticalSection(&m_csAddDist);
 	DeleteCriticalSection(&m_csSyncTime);
 	DeleteCriticalSection(&m_csCallInfo);
 
@@ -7118,10 +7116,8 @@ void CYAServerDlg::deal_card_msg( Card* card, bool is_hist /*= false*/ )
 					dist->tt = syncmanager.calTimeByLinar(tagMsg);
 				}
 
-				EnterCriticalSection(&m_csAddDist);
 				card->is_deal_by_algo = false;
 				card->add_dist(dist);
-				LeaveCriticalSection(&m_csAddDist);
 			}
 
 			if(m_log_locate_data){

+ 0 - 1
YAServerDlg.h

@@ -126,7 +126,6 @@ public:
 	CRITICAL_SECTION m_csRefreshList;
 	CRITICAL_SECTION m_csParseDataServer;
 	CRITICAL_SECTION m_csSyncTime;
-	CRITICAL_SECTION m_csAddDist;
 	CRITICAL_SECTION m_csCallInfo;
 
 	QueueStrManager* m_qsmSQL;

+ 1 - 1
classdef.cpp

@@ -8,7 +8,7 @@
 
 Card::Card( string cardid, int cardtype, double z_offset, double offset_x /*= 12.0*/, double offset_y /*=12.0*/ )
 {
-	InitializeCriticalSection(&m_csCard);
+	InitializeCriticalSectionAndSpinCount(&m_csCard, MAXCRITICALSECTIONSPINCOUNT);
 
 	card_type = cardtype;
 	card_id = cardid;

+ 2 - 0
constdef.h

@@ -1,6 +1,8 @@
 #ifndef _SERVER_CONST_DEF_H_
 #define _SERVER_CONST_DEF_H_
 
+#define MAXCRITICALSECTIONSPINCOUNT 4000
+
 #define TEST_WEB_URL "http://localhost:8080/yaloc/servlet/main?"
 //#define TEST_WS_URL  "ws://localhost:8086" 
 //#define TEST_WS_URL  "ws://192.168.0.36:8086"