#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;
}
C++实现的一个简单的多线程程序
最新推荐文章于 2024-08-01 09:46:25 发布