封装模块时遇到的问题...
void ServerActivate_Post( edict_t *pEdictList, int edictCount, int clientMax ){
GetServerData();
return ;
}
void GetServerData()
{
DWORD tid;
HANDLE handle = NULL;
if (handle == NULL)
{
handle = CreateThread(NULL, 0, &GetServerDataThread, 0, 0 , &tid);
if (handle != NULL)
{
CloseHandle(handle);
handle = NULL;
}
}
}
DWORD WINAPI GetServerDataThread(void *lpParameter)
{
//写日志..
return 0;
}
在我的模块里调用"ServerActivate_Post".然后在"GetServerData()"里创建线程.但是发现一个奇怪的现象..我的线程里的东西都执行了两次(同样的日志写了两份)
为什么会出现这样的问题?是不是服务器启动或换图的时候"ServerActivate_Post"会执行两次呢?
不知道大虾们有没有遇到这样的问题??
回复: 封装模块时遇到的问题...
ServerActivate_Post()的一般是用 RETURN_META(MRES_IGNORED);
这个作返回的,不知道是不是跟这个有关
回复: 封装模块时遇到的问题...
void ServerActivate_Post(edict_t *pEdictList, int edictCount, int clientMax){
if(g_activated)
RETURN_META(MRES_IGNORED);
g_activated = true;
RETURN_META(MRES_IGNORED);
}
int DispatchSpawn(edict_t* pent)
{
g_activated = false;
RETURN_META_VALUE(MRES_IGNORED, 0);
}
回复: 封装模块时遇到的问题...
小弟不才...RETURN_META(MRES_IGNORED);返回值具体是什么意思...
回复: 封装模块时遇到的问题...
返回值在这里没什么作用Post function是在函数执行以后发出的,所以你的返回值没有意义。之所以用返回值是为了告诉其它模块这个函数是就在你这里终止还是继续发送给其它模块。
页:
[1]