HANDLE hMutex;
DWORD ThreadID;
DWORD ThreadID_S;
class task_info
{
char* task_id;
public:
char* get_task_id()
{
return task_id;
}
void set_task_id(char* id)
{
task_id = id;
}
};
list<task_info> *task_list = NULL;
DWORD WINAPI Thread_List_In(LPVOID lpParam)
{
WaitForSingleObject(hMutex,INFINITE);
while(true)
{
for(int i=0;i<3000;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)
{
WaitForSingleObject(hMutex,INFINITE);
while(true)
{
cout<<"size--------- :"<<task_list->size()<<endl;
task_list->clear();
Sleep(1000);
}
ReleaseMutex(hMutex);
return 0;
}
task_list = new list<task_info>;
hMutex=CreateMutex(NULL,false,NULL);
HANDLE h_thread = CreateThread(
NULL, // default security attributes
0, // default stack size
(LPTHREAD_START_ROUTINE) Thread_List_In,
NULL, // no thread function arguments
0, // default creation flags
&ThreadID); // receive thread identifier
if( h_thread == NULL )
{
printf("CreateThread error: %d\n", GetLastError());
return 1;
}
DWORD ThreadID_S;
HANDLE h_thread_S = CreateThread(
NULL, // default security attributes
0, // default stack size
(LPTHREAD_START_ROUTINE) Thread_List_Out,
NULL, // no thread function arguments
0, // default creation flags
&ThreadID_S); // receive thread identifier
if( h_thread_S == NULL )
{
printf("CreateThread error: %d\n", GetLastError());
return 1;
}
//SetPriorityClass(h_thread,1);
//SetPriorityClass(h_thread_S,2);