一个 Dialog based (MFC)工程做服务器。socket(tcp数据流)已经建好,假设一个客户端发请求包过来,就开一个线程(要求线程有两个不同的优先级),直到处理结束返回应答包,然后结束线程。
请教各位大虾在线程建立方面提供思路(我以前没做过),当然越具体越好,最好说说用那些函数,我就是不知道用什么函数?

解决方案 »

  1.   

    CreateThread()                       //创建
    WaitForSingleObjectEx()              //等待结束
    ResumeThread()                       //唤醒
    SuspendThread()                      //挂起...
      

  2.   

    不是三言两语能说清楚的
    找本书看吧
    《windows高级编程指南(第三版)》
      

  3.   

    直接看《Windows网络编程技术》很多这样的例子。
      

  4.   

    创建线程最好不要用CreateThread,使用AfxBeginThread或_beginthread。
    如果客户端请求不频繁,主线程收到请求包后可以创建子线程并将请求信息地址以消息方式通知工作线程,否则就需要全局数据区和线程同步了。
    如果请求频繁,使用线程池可以减少临时创建线程的开销。
      

  5.   

    Windows网络编程技术 完成端口~
      

  6.   

    喂,有没搞错?
    我是在请教问题,又不是在讨论年龄。
    liagl(小林) halibut(乡下人) eroswzg(黄毛儿) 是朋友,让我看书的也是朋友。
    客户端请求很频繁,几乎每时每刻都同时有10个以上请求。
    再研究研究。
      

  7.   

    10个不算多,使用重叠IO和完成端口都可以,看zhouyong0371(小周周) 推举的那本书。
      

  8.   

    在<windows2000变成技术内幕>中有
    CreateThread,AfxBeginThread,_beginthread,_beginthreadEx的用法和可能带来的问题,
    同时在线程的同步有很多种方法,这本树立同样有详细的阐述,并且有实力
      

  9.   

    当然我说的是最少的情况,一般情况都比这个多的多。
    最多是一千多个,平时也有几百个。
    《Windows网络编程技术》看名字我感觉是一本网络的书,我想问的是线程控制,以前做过网络,用Windows Sockets2,多连接用了链表和WSAAsyncSelect()。重叠IO和完成端口 我还没什么印象,等会找这本书看看。 我现在最想了解的是怎么开线程和控制它,看来只有自己看书了。5555555555
      

  10.   

    为什么MM的问题这么多人回答? :(gz
      

  11.   

    最好使用完整端口来做,这样可以得到最大的效率。如果针对每一个socket请求都起一个先称那么服务器会累倒的。去查查完整端口的资料,网上应该有源代码。
      

  12.   

    有例子最好了,我最喜欢看例子了,这样速度快。rmichael(西边的云彩)你有吗?
    jyojyo(像海鸥一样飞翔)说的用处大。
      

  13.   

    MM,我喜欢~能不能留个地址啊,改天我上门和你详谈 :-p
      

  14.   

    急死了,我的CreateMutex的bInitialOwner参数不管为TRUE,还是FALSE,都没阻塞。(理论上为TRUE时阻塞)??????HANDLE mtxPrint;
    mtxPrint = CreateMutex(NULL, TRUE, "PrintMutex");
    WaitForSingleObject(mtxPrint, INFINITE);
      

  15.   

    CreateMutex 
    建立互斥事件,应该用
    if( GetLastError() == ERROR_ALREADY_EXISTS)
    {
        AfxMessageBox("程序已经运行了");
       return;
    }
      

  16.   

    Accept接受后就创建一个新线程,这个线程可以设置低一级,然后把这个SOCK教给这个线程处理就可以了。
      

  17.   

    类似做个IIS吧?这个例子很多,如果想获得最大效率就一定要针对每个client建立thread你这种需求可以用阻塞式的网络传输,不是很复杂
      

  18.   

    fantiyu(fantiyu) ,"如果想获得最大效率就一定要针对每个client建立thread"
    你疯了吗?这样有效率吗?cpu都被用来创建和销毁线程了。
    建议楼主研究一下线程池技术和io完成端口
      

  19.   

    看看 《WINDOWS网络编程技术》 里面的I/O完成端口吧,很适合你用