博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VC6.0多线程例程
阅读量:5889 次
发布时间:2019-06-19

本文共 1609 字,大约阅读时间需要 5 分钟。

  转:-------

 

多线程可以给程序实现许多的功能,并且多个函数同时进行有效地提高了程序的运行效率。这篇文章讲的就是VC控制台下的多线程操作。本文章还得感谢《VC+API常用函数简单例子大全》的作者

      首先我们要用到CreateThread函数,以下是函数原型:
      
HANDLE CreateThread(
                                           LPSECURITY_ATTRIBUTES lpThreadAttributes,
                                           DWORD dwStackSize,
                                           LPTHREAD_START_ROUTINE lpStartAddress,
                                           LPVOID lpParameter,
                                           DWORD dwCreationFlags,
                                           LPDWORD lpThreadId
                                          );
      它有六个参数,
第一个参数不用管它,填
NULL
,第二个参数
dwStackSize
用于新线程的初始堆栈大小,默认为
0
,第三个
lpStartAddress
填函数名(指标),但这个函数必须是这种固定格式的
DWORD _stdcall ThreadProc(LPVOID lpParameter),
新的线程将会执行这个函数里面的代码,直到函数结束,线程退出。第四个
lpParameter
是一自定义参数,用户可以通过这个参数,传递需要的类型,这个参数与线程函数的参数相对应。第五个
dwCreationFlags
0
表示立即执行,如果是
CREATE_SUSPENDED
表示挂起,直到用
ResumeThread
函数唤醒。第六个
lpThreadId
NULL
就行了。
 
例子:
#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;
}

 

 

 

对其进行简单修改完成了双线程:

 

 

#include <stdio.h>

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

 

  printf("2");

 

 }

 return 0;
}
int main()
{
 int mi=0;
 while (mi<100)
 {
 CreateThread(NULL,0,ThreadProc1,NULL,0,NULL);//创建1个线程,去执行ThreadProc1函数
 CreateThread(NULL,0,ThreadProc2,NULL,0,NULL);//创建2个线程,去执行ThreadProc2函数

 

  printf("主线程输出数字:%d\n",mi++);

  Sleep(100);
 }

 

 return 0;

}

 

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

你可能感兴趣的文章
杭州见闻
查看>>
What is Xeround?
查看>>
[转载]jQuery上传插件Uploadify使用详解
查看>>
算法学习的轨迹(转)
查看>>
asmx-web-service-basic-authentication
查看>>
Excel转换成图片的操作方法
查看>>
MFC中读取和设置文件状态
查看>>
分页显示
查看>>
iOS中安全结束 子线程 的方法
查看>>
批处理学习笔记8 - 深入学习For命令1
查看>>
Object-c学习之路二(oc内存管理黄金法则1)
查看>>
python开发_python文件操作
查看>>
iPhone 已停用
查看>>
CSS3之边框图片border-image
查看>>
图片轮换cycle插件的运用
查看>>
【Oracle】两个表Join关联更新
查看>>
ActiveX控件的安全初始化和脚本操作 和 数字签名SIGN
查看>>
关于IE下AJAX的问题探讨
查看>>
Eclipse console文本换行
查看>>
微信支付开发(11) Native支付
查看>>