【多线程】VC6使用_beginthread开启多线程的方法
_beginthread是C语言库提供的一个函数,作用是开启一个新的线程。开启以后,线程处理程序就会和你的当前线程同步运行。用图来表示就是这样:大家可以看出,经过这样的处理以后,你的程序变成了“多线程”程序了。可以同时跑两个程序。怎么样?屌不屌
DOS不支持多线程(虽然我有各种方法让它支持,但是默认的情况下DOS是不支持多线程的。)我这里主要讲支持多线程的操作系统怎么开启多线程。
如何开启多线程呢?首先你需要包含它的头文件。
#include<process.h>
然后你需要设置一下VC6的链接。
在VC6的左侧文件点文件视图(FileView)选项卡。
在工程文件点右键,出来一个菜单,点“设置”
然后在弹出来的窗口中找到“C/C++”并在下面的“分类:”下拉菜单中找到“Code Generation”
因为当前设置的是Win32 Debug(调试模式),你需要在右边的Use run-time library:(使用的运行库)中选择对应的调试版本的多线程运行库。
然后也别忘了Win32 Release(发布程序),你需要在右边的Use run-time library:(使用的运行库)中选择对应的发布版本的多线程运行库。
然后点确定,再编译就发现可以运行啦!
大家可以拿下面的代码来试着了解一下什么是多线程。#include<stdio.h>
#include<process.h>
void Print1()//打印无数个1
{
PutAgain:
putchar('1');
goto PutAgain;
}
void Print2()//打印无数个2
{
PutAgain:
putchar('2');
goto PutAgain;
}
void main()
{
_beginthread(Print1,0,NULL);
Print2();
}这段代码运行的效果,就是你会看到一个控制台窗口有时候打印很多1,有时候打印很多2.为什么是这样的呢?因为你的两个程序一个是打印无数个1,一个是打印无数个2,那么当它们同时运行的时候,它们就会抢着要往控制台窗口输出自己要输出的字符。于是就出现了下面的效果:
大家回帖之后就可以下载我的这个多线程实例编译后的EXE了。**** Hidden Message *****我相信一定会有人问我,Multithread与Multithread DLL有什么区别。
Multithread(没有DLL)这个是把C语言运行库和你的程序链接合并到一起了。而Multithread DLL则把C语言运行库单独作为DLL和你的程序分离开来。
如果你只是编写一个简单的、单一的程序,你最好设置成Multithread(没有DLL),让你的程序和C语言运行库合并成一个单一的EXE,这样当你发布你的程序的时候就方便了。
而如果你要编写一个复杂的、庞大的程序,有多个EXE要生成,而且它们都用到了C语言运行库,这个时候就适合选择Multithread DLL,把C语言运行库作为独立的DLL和你的程序放到一起。这样,当你的程序们运行的时候,它们就会共同享用一个C语言运行库(而不是各用各的)。这样你的这些程序们的总体积就会减小,一起运行的时候占用的内存也减小了。但是因为每个程序在运行的时候都要载入一次DLL,导致程序刚开始运行可能会稍微慢一点。 系统自动沙发 谢谢指路 VC6的话,用不着静态啊,VC6编译出来是依赖msvcrt.dll,系统都自带这个,而且连部分WinAPI的dll都依赖它,所以单个exe也没有用静态的必要了:lol 先做个记号
页:
[1]