VC6.0 多线程(三)

代码源于网络,请勿商用

为什么要多线程(原因很简单哈,多个客服端进入,需要协同连接客服端沟通)(最好使用udp服务器设计)

注意vc6.0 的CreateThread开启线程,会造成内存泄漏,VS高级版本可能有效解决

下面是源代码网址,大家可以参考一下,不过你们运行的时候,发现结果不是想要的那种

https://www.cnblogs.com/TFH-FPGA/archive/2013/01/04/2844978.html

点击+打开
#include <stdio.h>
#include <windows.h>
DWORD _stdcall ThreadProc(LPVOID lpParameter)//线程执行函数
{
 int si=100;
 while(si>0)
 {
  printf("子线程输出数字:%d\n",si--);
  Sleep(1000);
 }
 return 0;
}

int main()
{
 int mi=0;
 CreateThread(NULL,0,ThreadProc,NULL,0,NULL);//创建一个线程,去执行ThreadProc函数
 while(mi<100)
 {
  printf("主线程输出数字:%d\n",mi++);
  Sleep(1000);
 }
 return 0;
}
 Code

运行效果

输出有乱码(可能是内存泄漏缘故)(高级版本的vs可能有效解决(大家百度查看CreateThread))

 下面网址  是用_beginthreadex()启动函数  里面解释了CreateThread的问题

https://www.cnblogs.com/candl/p/5429919.html

——————————————————————————————————————————————————

我根据更改成_beginthreadex()的方法   注意vc6.0设置(否者报错)   下面网址有说明

http://blog.csdn.net/syytem004/article/details/41247509

#include<stdio.h>
#include <process.h>
#include <stdio.h>
#include <windows.h>
unsigned _stdcall ThreadProc1(LPVOID lpParameter)//线程执行函数1
{
int si=100;
while(si>0)
{
printf("子线程:%d\n",si--);
Sleep(1000);
}
return 0;
}


int main()
{
int mi=0;

HANDLE   hth1;
unsigned  uiThread1ID;
hth1 = (HANDLE)_beginthreadex( NULL, 0,ThreadProc1,NULL,  
                              CREATE_SUSPENDED,&uiThread1ID );
if(hth1 == NULL)
{
return FALSE;
}
else
{
ResumeThread(hth1);
}
while(mi<100)
{
printf("主线程输出数字:%d\n",mi++);
Sleep(1000);
}
return 0;
}
点击+打开代码

 

完美的运行(但也有些出错概率,具体原因,请看最后的网址)

下面讲为什么会出现问题,原子性操作,不会出错

http://blog.csdn.net/morewindows/article/details/7429155

还网上一些资料希望大家能认真看看,并理解

(转)http://blog.csdn.net/column/details/killthreadseries.html

转载于:https://www.cnblogs.com/chenfeiguoguo/p/8553012.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值