套接字事件
#include <IOSTREAM>
#include <WINDOWS.H>
using namespace std;
//进程内部 线程通知 --->异步 ->同步
UINT32 __stdcall CallBack(LPVOID lParam);
HANDLE g_Event[2] = {0};
void main()
{
g_Event[0] = CreateEvent(NULL,TRUE,FALSE,NULL); //匿名 手动 未授信
g_Event[1] = CreateEvent(NULL,TRUE,FALSE,NULL); //匿名 手动 未授信
HANDLE ThreadHandle = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)CallBack, NULL,0,NULL);
int i = 0;
for (i=0;i<20;i++)
{
printf("Main()\r\n");
if (i==3)
{
//通知事件A 等待事件B
SetEvent(g_Event[0]); //NO --->Yes
//ResetEvent(g_Event[0]); //Yes --->No
WaitForSingleObject(g_Event[1],INFINITE);
//Sleep(1);
}
}
Sleep(INFINITE);
}
UINT32 __stdcall CallBack(LPVOID lParam)
{
int i = 0;
//等待事件A授信
WaitForSingleObject(g_Event[0],INFINITE); //Yes--->No
/*for (i=0;i<100000;i++)
{
printf("SubMain()\r\n");
}*/
printf("SubMain()\r\n");
WaitForSingleObject(g_Event[0],INFINITE);
printf("SubMain()\r\n");
SetEvent(g_Event[1]);
return 0;
}
globalalloc virtualalloc 虚拟内存 heapalloc 堆进程
PSOCKET_OBJECT GetSocketObject(SOCKET Socket)
{
//申请套接字对象
PSOCKET_OBJECT SocketObject = (PSOCKET_OBJECT)GlobalAlloc(GPTR, sizeof(SOCKET_OBJECT)); //#define GPTR (GMEM_FIXED | GMEM_ZEROINIT)
if(SocketObject != NULL)
{
SocketObject->Socket = Socket;
}
return SocketObject;
}
#include <IOSTREAM>
#include <WINDOWS.H>
using namespace std;
//进程内部 线程通知 --->异步 ->同步
UINT32 __stdcall CallBack(LPVOID lParam);
HANDLE g_Event[2] = {0};
void main()
{
g_Event[0] = CreateEvent(NULL,TRUE,FALSE,NULL); //匿名 手动 未授信
g_Event[1] = CreateEvent(NULL,TRUE,FALSE,NULL); //匿名 手动 未授信
HANDLE ThreadHandle = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)CallBack, NULL,0,NULL);
int i = 0;
for (i=0;i<20;i++)
{
printf("Main()\r\n");
if (i==3)
{
//通知事件A 等待事件B
SetEvent(g_Event[0]); //NO --->Yes
//ResetEvent(g_Event[0]); //Yes --->No
WaitForSingleObject(g_Event[1],INFINITE);
//Sleep(1);
}
}
Sleep(INFINITE);
}
UINT32 __stdcall CallBack(LPVOID lParam)
{
int i = 0;
//等待事件A授信
WaitForSingleObject(g_Event[0],INFINITE); //Yes--->No
/*for (i=0;i<100000;i++)
{
printf("SubMain()\r\n");
}*/
printf("SubMain()\r\n");
WaitForSingleObject(g_Event[0],INFINITE);
printf("SubMain()\r\n");
SetEvent(g_Event[1]);
return 0;
}
globalalloc virtualalloc 虚拟内存 heapalloc 堆进程
PSOCKET_OBJECT GetSocketObject(SOCKET Socket)
{
//申请套接字对象
PSOCKET_OBJECT SocketObject = (PSOCKET_OBJECT)GlobalAlloc(GPTR, sizeof(SOCKET_OBJECT)); //#define GPTR (GMEM_FIXED | GMEM_ZEROINIT)
if(SocketObject != NULL)
{
SocketObject->Socket = Socket;
}
return SocketObject;
}