DWORD WINAPI Classify_Data2(LPVOID lpParamter) { OneMinute oneninute; BaseData *base; base= &oneninute; bool flag = false; //每次只处理一个数据 while(1) { if(method_Rest_Time()) { Sleep(1000); //在休盘时间重置 清除内存中数据 /**********要改的地方**********/ if (oneninute.tsmd_a->size()!=0) { oneninute.TIME_INTERVAL=0; oneninute.contract=""; oneninute.compare_time=0; memset(&(oneninute.current_data),0,sizeof(oneninute.current_data)); memset(&(oneninute.compare_data),0,sizeof(oneninute.compare_data)); oneninute.tsmd_a = NULL; oneninute.tsmd_a= new map<string,OneMinute*>(); base = NULL; base = &oneninute; } } //进入临界区 EnterCriticalSection(&cs); CThostFtdcDepthMarketDataField_Custom* dd =cmdSpi_custom->methodGetDatas_After(); //释放临界区 LeaveCriticalSection(&cs); if (dd!=NULL) { flag = true; } if (flag) { flag = false; //转换数据 CThostFtdcDepthMarketDataField_Custom_Tick ct = methodChangeData(*dd); if (!base->isExist((string)(ct.InstrumentID))) { base->addContractToMap(&ct); } else { base->updateData(&ct); } }//end flag }//end while }//end Classify_Data2
DWORD WINAPI Classify_Data2(LPVOID lpParamter) { BaseDataInherit basedatainherit; basedatainherit.TIME_INTERVAL =DATA_TIME_INTERVAL; //默认时间间隔 BaseData *base; //基类指针 base= &basedatainherit; bool flag = false; //每次只处理一个数据 while(1) { //休盘时间清空数据 if(method_Rest_Time()) { Sleep(1000); //在休盘时间重置 清除内存中数据 //要改的地方 if (basedatainherit.tsmd_a->size()!=0) { basedatainherit.TIME_INTERVAL = DATA_TIME_INTERVAL; basedatainherit.contract=""; basedatainherit.compare_time=0; memset(&(basedatainherit.current_data),0,sizeof(basedatainherit.current_data)); memset(&(basedatainherit.compare_data),0,sizeof(basedatainherit.compare_data)); basedatainherit.tsmd_a = NULL; basedatainherit.tsmd_a= new map<string,BaseDataInherit*>(); base = NULL; base = &basedatainherit; } } //进入临界区 EnterCriticalSection(&cs); CThostFtdcDepthMarketDataField_Custom dd =cmdSpi_custom->methodGetDatas_After(); //释放临界区 LeaveCriticalSection(&cs); if (dd.TradingDay!=0) { flag = true; }else{ //睡眠10ms,防止cpu过高 20151222 加 Sleep(10); } if (flag) { ////////////////////////////////////////////////////////////////////////// //处理郑商所夜盘日期问题 if (dd.UpdateTime>=210000&&dd.UpdateTime<210300) { if ((string)(dd.ExchangeID)=="shfe") { TradingDay = dd.TradingDay; } } if (dd.UpdateTime>=210000||dd.UpdateTime<23000) { if ((string)(dd.ExchangeID)=="czce") { dd.TradingDay=TradingDay; } } ////////////////////////////////////////////////////////////////////////// flag = false; //转换数据 CThostFtdcDepthMarketDataField_Custom_Tick ct = methodChangeData(dd); if (!base->isExist((string)(ct.InstrumentID))) { base->addContractToMap(&ct); } else { base->updateData(&ct); } }//end flag }//end while }//end Classify_Data2