zoukankan      html  css  js  c++  java
  • 多线程

    多线程的好处:

    1.可以节省内存空间。

    2.进程与进程切换。需要交换整个内存空间。多线程可以节省时间。线程与线程之间的切换只需要一个运行环境的改变。执行效率比较高。。。

    #include<windows.h>

    #include<iostream>

    DWORD API ThreadFun();

    int main()

    {

    HANDLE hThread;

    hTread=CreateThread(NULL,0,ThreadFun,0,Null);

    CloseHandle(hThread);

    cout<<"Main Thread is running !";

    return 0;

    }

    DWORD API TreadFun()

    {

    cout<<"Tread is Running!";

    return 0;

    }

    主线程退出。进程就会退出,那么在进程里的所有资源以及线程都将会退出。

    所有上面TreadFun是没有执行的机会的。

    也就是说创建线程并不一定会立刻给他分配时间片。也就是说上说程序,在创建线程之后并没有给线程分配时间片。而主线程的时间片执行完之后。主线程就会退出。主线程退出那么进程就会退出。进程退出则创建的线程就没了执行机会。

    互斥信号量对象:与线程相关。CreateMutex(NULL,TRUR,NULL);信号量处于未通知状态。信号量对象主线程拥有。并此时信号量在主线程的计数为1;

    WaitForSingleObject(hMutex,);release();

    //没有消息过来的时候。recv接收函数就会阻塞。线程就会切换。。。相同的。码流没到来的时候。那么主线程就会等待,其他线程就会执行。。。回调函数就会执行。。。2.由于接收消息时,可能会有消息延迟。则导致RecvFrom函数等待。进而导致线程被挂起。所以应该将接收消息的模块单独放在另一个线程内。使之只负责接收消息。在创建线程时。应当传递传入两个参数。一个是绑定的套接字。另一个则是接收数据的窗口句柄。以便抛消息到此窗口上。另:抛消息时可以另带参数,进而可以将接收到数据随消息传送到窗口内。。。。在接收消息的线程中应当使用一个while(true)死循环。以便此线程可以一直运行下去。一直不停的接收数据。

       最重要的是不需要考虑线程之间切换的问题。。。因为CPU的时间片很短,没必要增加手动切换线程。实际上这样会大大增大程序维护的成本。。。

  • 相关阅读:
    数据绑定表达式语法(Eval,Bind区别)
    使用博客园的第一件事 自定义主题
    sql2000 跨服务器复制表数据
    使用UpdatePanel 局部刷新出现中文乱码的解决方法!!
    MMC不能打开文件MSC文件
    sql 日期 、时间相关
    loaded AS2 swf call function in AS3 holder
    Rewrite the master page form action attribute in asp.net 2.0
    100万个不重复的8位的随机数
    flash 中实现斜切变型
  • 原文地址:https://www.cnblogs.com/sunshinewave/p/2979972.html
Copyright © 2011-2022 走看看