DWORD WINAPI Thread_List_In(LPVOID lpParam)
{
MSG msg;
PeekMessage(&msg, NULL, WM_USER, WM_USER, PM_NOREMOVE);
while(1)
{
if(GetMessage(&msg,0,0,0)) //get msg from message queue
{
switch(msg.message)
{
case MY_MSG:
char * pInfo = (char *)msg.wParam;
printf("recv %s\n",pInfo);
WaitForSingleObject(hMutex,INFINITE);
task_list_out = task_list;
task_list.clear();
ReleaseMutex(hMutex);
Sleep(100);
delete[] pInfo;
break;
}
}
for(int i=0;i<30000;i++)
{
task_info ti;
ti.set_task_id("1");
task_list.push_back(ti);
}
//WaitForSingleObject(hMutex,INFINITE);
/*task_pool tp = get_free_pool();
for(int i=0;i<300;i++)
{
task_info *ti = new task_info();
ti->set_task_id("1");
tp.task_list->push_back(*ti);
}
tp.list_state = 1;*/
//ReleaseMutex(hMutex);
}
//WaitForSingleObject(hMutex,INFINITE);
////while(true)
//{
// for(int i=0;i<30000;i++)
// {
// task_info *ti = new task_info();
// ti->set_task_id("1");
// task_list->push_back(*ti);
// }
// if(task_list->size()>8000)
// {
// Sleep(1000);
// }
//}
//ReleaseMutex(hMutex);
return 0;
}
DWORD WINAPI Thread_List_Out(LPVOID lpParam)
{
int i=0;
while(1)
{
//WaitForSingleObject(hMutex,INFINITE);
//task_pool tp = get_buzy_pool();
cout<<"size--------- :"<<task_list_out.size()<<endl;
char* pInfo = new char[10]; //create dynamic msg
sprintf(pInfo,"msg_%d",i++);
if(!PostThreadMessage(ThreadID,MY_MSG,(WPARAM)pInfo,0))//post thread msg
{
printf("post message failed,errno:%d\n",::GetLastError());
delete[] pInfo;
}
//task_pool_list.remove(tp);
//tp.list_state = 0;
//tp.task_list->clear();
//ReleaseMutex(hMutex);
Sleep(1000);
}
/*WaitForSingleObject(hMutex,INFINITE);
while(true)
{
cout<<"size--------- :"<<task_list->size()<<endl;
task_list->clear();
Sleep(1000);
}
ReleaseMutex(hMutex);*/
return 0;
}