搜索
查看: 2474|回复: 4

封装模块时遇到的问题...

[复制链接]
发表于 2008-6-5 14:41:07 | 显示全部楼层 |阅读模式 来自 中国–广东–深圳–福田区
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"会执行两次呢?
不知道大虾们有没有遇到这样的问题??
发表于 2008-6-5 15:04:15 | 显示全部楼层 来自 中国–广东–惠州

回复: 封装模块时遇到的问题...

ServerActivate_Post()
的一般是用 RETURN_META(MRES_IGNORED);
这个作返回的,不知道是不是跟这个有关
回复

使用道具 举报

发表于 2008-6-5 15:33:11 | 显示全部楼层 来自 中国–北京–北京–海淀区

回复: 封装模块时遇到的问题...

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);
}
回复

使用道具 举报

 楼主| 发表于 2008-6-5 16:59:59 | 显示全部楼层 来自 中国–广东–深圳–福田区

回复: 封装模块时遇到的问题...

小弟不才...RETURN_META(MRES_IGNORED);
返回值具体是什么意思...
回复

使用道具 举报

发表于 2008-6-5 17:57:08 | 显示全部楼层 来自 中国–北京–北京–海淀区

回复: 封装模块时遇到的问题...

返回值在这里没什么作用Post function是在函数执行以后发出的,所以你的返回值没有意义。之所以用返回值是为了告诉其它模块这个函数是就在你这里终止还是继续发送给其它模块。
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注个册吧

快速回复 返回顶部 返回列表