(SDK)多线程单线程比较演示程序

这是一个由Wandy Wang编写的C程序,用于演示单线程和多线程的区别。用户需要在命令行以特定参数启动程序,程序会根据参数决定执行单线程还是多线程,并按指定计数值进行输出。在多线程模式下,程序会创建新线程执行任务。主线程和从线程可以根据参数设置是否发出声音。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需要在VC中设置好使用多线程运行时库,否则程序无法识别_beginthread函数,运行时需要在命令行带参运行。例如mt 0 30 30 0 0表示多线程,主线程和从线程计数均为20,均不发声。 
 
/**************************
Wandy Wang   2005-3-27
 
单线程与多线程演示程序
 
***************************/
// compile with: /MT /D "_X86_" /c
 
#i nclude <windows.h>
#i nclude <stdio.h>
#i nclude <process.h>
#i nclude <dos.h>
#i nclude <string.h>
 
int t1Snd,t2Snd;
 
//线程函数
void fun(void* para)
{
 int i=0;
 for(i=0;i<=atoi((char*)para);i++)
 {
    printf("+++++i=%d/n",i);  
       if(t2Snd) MessageBeep(MB_ICONEXCLAMATION);
 }
}
 
//主函数
void main(int argc,char* argv[])
{
   //函数介绍及使用提示
   printf( "演示但线程与多线程区别的程序/n");
  
   //参数解析说明
   //0 路径
   //1 程序类型 1单线程 0多线程
   //2 主线程计数值
   //3 次线程计数值
   //4 主线程发声与否
   //5 从线程发声与否
   int single,t1Cnt,t2Cnt;
  
   if(argc!=6)
   {
          printf("参数个数不对,必须为6个参数");
          printf("/n正确调用方式:mt 1 30 30 0 0/n参数解释:多线程,主线程计数,从线程计数,主线程不发声,从线程不发声/n参数可以相应改变,须在命令行下执行/n");
          getchar();         
          return;
   }
   else
   {  
          single=atoi(argv[1]);
          t1Cnt=atoi(argv[2]);
          t2Cnt=atoi(argv[3]);
          t1Snd=atoi(argv[4]);
          t2Snd=atoi(argv[5]);
 
          printf("/n可执行文件名:%s",argv[0]);
          printf("/n程序类型:%s",single?"单线程":"多线程");
                      printf("/n主线程计数值:%d",t1Cnt);
          printf("/n次线程计数值:%d",t2Cnt);
          printf("/n主线程发声与否:%s",t1Snd?"是":"否");
          printf("/n从线程发声与否:%s",t2Snd?"是":"否");  
   }       
 
   //等待开始
   getchar();
  
   char string[10];
  
   //单线程或创建多线程输出
   if(single)
   {
      fun((void*)itoa(t2Cnt,string,10));     
   }
   else
   {
         _beginthread(fun,0,(void*)itoa(t2Cnt,string,10));//创建新线程
   }
  
   //主线程输出
   int j=0;
   for(j=0;j<=t1Cnt;j++)
   {
     printf("-----j=%d/n",j);
        if(t1Snd) MessageBeep(MB_ERROR);
   } 
 
  
   //输出完后暂停看屏幕输出
   getchar();
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值