15,471
社区成员
发帖
与我相关
我的任务
分享
#ifdef _WIN32
#pragma warning(disable: 4786 4251)
#endif
#include <time.h>
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <map>
#include <string>
#define THREADNUM 10
#define MSG_START WM_USER+101
using namespace std;
DWORD WINAPI proc(LPVOID lparam);
class _param
{
public:
map<int,map<int ,string > > test;
};
/* struct _param
{
map<int,map<int ,string > > test;
};
*/
class A
{
public:
string a;
// struct _param *b;
_param *b;
};
class B
{
public:
map<int,class A> a;
};
int main(int argc, char* argv[])
{
HANDLE hThread[THREADNUM];
DWORD threadid[THREADNUM];
time_t curtime;
//struct _param * param;
//param=new struct _param ;
_param * param;
param=new _param ;
map<int,string> tmpmap;
tmpmap.insert(pair<int,string> (1,"aa"));
tmpmap.insert(pair<int,string> (2,"bb"));
param->test.insert(pair<int,map<int,string> > (1,tmpmap));
tmpmap.insert(pair<int,string> (3,"cc"));
param->test.insert(pair<int,map<int,string> > (2,tmpmap));
A aa;
aa.b=param;
aa.a="nn";
B bb;
bb.a.insert(pair<int,A> (1,aa));
bb.a.insert(pair<int,A> (2,aa));
int i;
for( i=0;i<THREADNUM;i++)
{
hThread[i]=CreateThread(NULL,0,proc,&bb,0,threadid+i);
}
Sleep(2000);
for(i=0;i<THREADNUM;i++)
{
PostThreadMessage(threadid[i],MSG_START,0,0);
}
curtime=time(NULL);
printf("curtime=%d\n",curtime);
WaitForMultipleObjects(THREADNUM,hThread,true,INFINITE);
curtime=time(NULL);
printf("curtime=%d\n",curtime);
return 0;
}
DWORD WINAPI proc(LPVOID lparam)
{
B *param=(B*)lparam;
map<int,string> ::iterator tmpiter;
map<int,A > ::iterator iter;
MSG strumsg;
map<int ,A> con;
A *cc;
while(1)
{
int ret=GetMessage(&strumsg,NULL,MSG_START,MSG_START);
if(ret==0)
{
return 0;
}
else
{
for(int i=0;i<10000000000;i++)
{
con=param->a;
cc=new A;
/* for(iter=param->a.begin();iter!=param->a.end();iter++)
{
*cc=iter->second;
//cc->a="cc";
con.insert(pair<int,A> (1,*cc));
}
*/ delete cc;
printf("end. \n");
if(i%50000==0)
printf("%d\n",i);
}
return 0;
}
}
return 0;
}