C++实现的一个简单的多线程程序

#include <stdio.h>
#include <windows.h>
#include <process.h>
#include <stdlib.h>


LONG gCurThreadNum = 0;
int gThinkTime = 0;
bool gStop = false;


bool Connect()
{
    return true;
}


bool Send()
{
    return true;
}


UINT WINAPI ThreadProc( void* param )
{
    Sleep( 100 );
    // 发送数据
    while( !gStop )
    {
        printf( "Test............./n" );
        // 请在此处实现发送的处理
        //..........
        Sleep( gThinkTime );
    }

    // 线程退出
    InterlockedDecrement(&gCurThreadNum);
    return 0;
}


// 启动线程
void Start( int threadNum, int thinkTime )
{
    gStop = false;
    gThinkTime = thinkTime;

    for ( int i=0; i<threadNum; i++ )
    {
        UINT threadId = 0;
        HANDLE hThread = (HANDLE)_beginthreadex( NULL,     0, ThreadProc, NULL, 0, &threadId );

        if ( hThread )
        {
            printf( "第%2d个线程启动成功。/n", i );
            InterlockedIncrement(&gCurThreadNum);
        }
        else
        {
            printf( "第%2d个线程启动失败。/n", i );
        }
    }
}


// 停止线程
void Stop()
{
    gStop = true;

    while ( gCurThreadNum > 0 )
    {
        Sleep( 100 );
    }
}


int main( int argc, char** argv )
{
    printf( "车联网服务端测试程序运行中[Q/q+回车退出]:/n" );

    int threadNum = 2;    // 线程数
    int thinkTime = 1000;    // 思考时间

    if ( argc<2 )
    {
        printf( "输入的参数不完整,使用默认参数:线程数[2 个线程] 思考时间[1000 毫秒]。/n" );
    }
    else
    {
        if ( threadNum < 0 )
        {
            threadNum = 2;
        }

        if ( thinkTime < 10 )
        {
            thinkTime = 1000;
        }
    }

    // 启动线程
    Start( threadNum, thinkTime );

    // 提示
    printf( "当前运行了线程数为:%d 个/n", gCurThreadNum );
    printf( "每个线程思考时间为:%d 毫秒/n", gThinkTime );

    // 挂起
    while( true )
    {
        char ret = getchar();
        if ( ret == 'q' ||  ret == 'Q' )
        {
            // 停止线程
            Stop();
            break;
        }
    }

    // 线程退出
    printf( "测试停止。/n" );
    getchar();

    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值