
欢迎访问技术宅的结界,请注册或者登录吧。
您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们
x
_beginthread是C语言库提供的一个函数,作用是开启一个新的线程。开启以后,线程处理程序就会和你的当前线程同步运行。用图来表示就是这样:


大家可以看出,经过这样的处理以后,你的程序变成了“多线程”程序了。可以同时跑两个程序。怎么样?屌不屌
apache默认已支持cgi,但默认没有开启,如需要cgi支持,可用如下方法。答:手机类型:智能手机,音乐手机 操作系统:symbian 9.3 s60 3.2(s60第三版fp2) 手机制式:gsm wcdma(行货不支持3g) 主屏尺寸:2.0英寸, 主屏分辨率:240×320像素 1600万色屏幕 上市日期:2008年07月 手机版本:亚太版 欧版 大陆版本不支持3g,5320 di支持wcdma cpu:单颗 freescale(飞思卡尔) mxc300-30 arm 11,主频369 mhz,推测支持变频节能 随机存储器:128m sdram,默认系统启动后有 85mb 空余(free executable ram memory = 85mb) 诺基亚5320xm闪存:256mb nand flash memory 存储空间:125mb(亚洲区常见版本实测)/140mb(官方数字),来自闪存,默认系统启动后仍然有 45-120mb 空余(不同机型装不同版本操作系统所引起的差异,软格后无附加软件时达到最大空余 120mb) 扩展存储:支持 micro sd/sdhc 卡(tf 卡)扩展,最大8gb 生产情况:已停产。每开一个线程都会造成系统额外的负担,开启线程需要占用一定的内存空间(默认情况下,每一条线程都会占用 512kb),如果开启大量的线程,会占用大量的内存空间,降低程序的性能。
如何开启多线程呢?首先你需要包含它的头文件。
#include<process.h>
然后你需要设置一下VC6的链接。

在VC6的左侧文件点文件视图(FileView)选项卡。

在工程文件点右键,出来一个菜单,点“设置”

然后在弹出来的窗口中找到“C/C++”并在下面的“分类:”下拉菜单中找到“Code Generation”


createdirectoryw 创建一个新目录 createfilew 打开或创建以下对象,并返回可访问的句柄:控制台,通信资源,目录(只读打开),磁盘驱动器,文件vc多线程,邮槽,管道 createthread 在主线程的基础上创建一个新线程 deletefilew 删除指定文件 exitprocess 终止一个进程 findclose 关闭一个搜索句柄 findfirstfilew 根据文件名查找文件vc多线程,利用在历遍指定目录的所有文件 findnextfilew 根据文件名查找文件,利用在历遍指定目录的所有文件 getcommandlinew 获得指向当前命令行缓冲区的一个指针 getcurrentprocess 获取当前进程的一个伪句柄 getcurrentthread 获取当前线程句柄 getfilesize 获得该文件的大小 getmodulehandlew 获取一个应用程序或动态链接库的模块句柄 getprocessheap 返回调用进程的默认堆句柄 getshortpathnamew 获取指定路径的短路径形式 heapalloc 指定的堆上分配内存,并且分配后的内存不可移动 heapfree 释放堆内存 isdebuggerpresent 确定调用进程是否由用户模式的调试器调试 mapviewoffile 负责把文件数据映射到进程的地址空间 readfile 从文件中读出数据 setfilepointer 说明在一个文件中设置当前的读取位置 writefile 将数据写入文件。一个线程可以调用pthread_mutex_lock获得mutex(操作系统调度执行此线程),如果这时另一个线程已经调用pthread_mutex_lock获得了该mutex,则当前线程需要挂起等待(操作系统仍可能在调度执行此线程),(操作系统调度切换运行另一线程)直到另一个线程调用pthread_mutex_unlock释放mutex,(另一线程释放mutex时操作系统调度运行此线程)当前线程被唤醒(即从此线程上次执行的地方继续执行),才能获得该mutex并继续执行。当前运行的线程可以调用另一个线程的 join()方法,当前运行的线程将转到阻塞状态,直到另一个线程运行结束,它才恢复运行。

然后也别忘了Win32 Release(发布程序),你需要在右边的Use run-time library:(使用的运行库)中选择对应的发布版本的多线程运行库。


然后点确定,再编译就发现可以运行啦!
大家可以拿下面的代码来试着了解一下什么是多线程。
[C] 纯文本查看 复制代码
#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了。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-114276-1.html
对这种日子是满意的