zoukankan      html  css  js  c++  java
  • C++ AfxBeginThread和AfxEndThread 使用方法

    启动线程:

    CWinThread* AfxBeginThread( 线程函数,this );

    线程的退出:

    在刚刚使用的时候,退出线程的方法有问题,导致退出的时候异常。

    下面说线程退出的方法:

    1. 线程函数返回

    线程都在死循环中,当满足一定条件时,return,也会将线程结束。

    2. AfxEndThread

    这个函数只能用在线程函数中,当满足一定条件是,调用。

    举一个例子:

    可以创建一个信号量,用WaitForSingleObject函数来检测该信号量的状态。

    成员变量 m_hThreadEvent;

    m_hThreadEvent = CreateEvent( NULL, FALSE, FALSE, NULL );

    线程的执行函数:

    for ( ; ; )
    
    {
    
    DWORD dwRetVal;
    
    dwRetVal = WaitForSingleObject( m_hThreadEvent, 100 );
    
    if ( dwRetVal == WAIT_TIMEOUT )
    
    {
    
    // TODO:
    
    }
    
    else
    
    {
    
    // stop receive text thread.
    
    DWORD dwExitCode;
    
    GetExitCodeThread( m_pThreadRecv->m_hThread, &dwExitCode );
    
    AfxEndThread( dwExitCode, TRUE );
    
    }
    
    }
    要结束线程时,使用SetEvent,将信号量置为有信号。

    该线程是在信号量有信号时,退出。

    3. TerminateThread

    在CWinThread对象中有线程的句柄,可以使用该句柄强行杀死线程。但是不推荐使用这种方式,当可以正常结束的时候,选择前两种方法较好。

  • 相关阅读:
    迷宫城堡 HDU
    Strategic game POJ
    Warm up HDU
    Network POJ
    Delphi Tstream 流
    Delphi 获得文件大小的五种方法
    Delphi Messagebox 介绍
    delphi idftp
    Delphi 操作Excel
    Delphi 打印对象 Tprinter 常用属性、方法、函数、打印示例
  • 原文地址:https://www.cnblogs.com/lujin49/p/4620768.html
Copyright © 2011-2022 走看看