static int WINAPI MY_send(SOCKET s,const char FAR *buf,int len,int flags)
{
EnterCriticalSection(&g_cs); UnHook_send();
int ret = send ( s , buf , len , flags );
Hook_send(); LeaveCriticalSection(&g_cs); if(flag == 1)
{
if(len == 16)
{
         CreateThread(......); }
else if(len == 17)
{
CreateThread(......);
}
} return ret;
}程序会很卡,确切的说是屏幕有点飘,是不是创建线程消耗的资源太多导致?  但是我没有别的好办法,新创建的线程里面也是判断,符合判断则XXX.是不是创建个新线程会比之前更卡呀?  我只是为了追求速度,没有考虑性能呀...  哪位兄弟能指点一下思路,应该如何去想这个问题?

解决方案 »

  1.   


    没错兄弟,就是界面卡但是我如果在send函数刚进来的时候就创建线程在新线程处理数据,也是一样卡...这是我的dll,已经注入到第三方程序了,现在是第三方程序的界面会拖慢,兄弟请问有什么好思路能指点一下吗?
      

  2.   

    在你处理数据的函数里加上这个试试MSG msg;
    while(PeekMessage( &msg, NULL, 0, 0, PM_REMOVE)) 
    {
    TranslateMessage(&msg);
    DispatchMessage(&msg);
    }
      

  3.   

    谢谢你,我发现卡是创建线程频繁了就太消耗资源了,就卡起来了,因为就算我新建的线程直接返回都会卡所以我把创建线程去掉了,直接在send里面处理数据了,以前还是会卡的,不过加了你给我的函数以后强了很多,虽然也有一点点小卡,但是效果我也很满意了另外我想问一下:
    1.有关于这段代码的意思,我不懂.谢谢.
    2.我不知道把这段代码加在哪里合适,我是加在了send函数入口处,如果在每个判断语句内部都加入一次,会不会效果更好? 谢谢你,马上结贴