第一范文网 - 专业文章范例文档资料分享平台

利用API在Windows下创建进程和线程

来源:用户分享 时间:2025/6/1 13:43:50 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

2.3 线程实验2---Windows下可创建的线程的数目的测试:

这里使用的是让测试线程睡眠100秒,如果用的是让测试进程进入死循环的方法,则会很快让系统僵掉。

/*测试程序3: 测试在Windows下最多可创建线程的数目. */ DWORD WINAPI threadWork(LPVOID threadNo) { DWORD result=0; while(runFlag) { Sleep(100000); } //Terminate return result; } void main(int argc,char* argv[]) { int count=0; DWORD targetThreadID; while(runFlag) { if(CreateThread(NULL,0,threadWork,NULL,0,&targetThreadID)==NULL) { runFlag=false; break; } else count++; printf(\,count); } Sleep(5000); printf(\,count); printf(\}

在Windows XP下(赛扬800MHZ,256M内存),在上述方式下,测得可创建的最多的线程数目为2030个.

2.4 线程实验3---最简单的一个临界资源的读者,写者程序.

这个程序要实现的是最简单的读者,写者程序,读者将1~10十个数字依次填入临界资源区gData,当且仅当gData被读者消费后,写者才可以写入下一个数.

/*测试程序4: 最简单的一个临界资源的读者,写者程序. */ DWORD WINAPI threadReader(LPVOID lpvoid) { int reader_Data; int busyTime=10000; float tmp; int i; while(gRunFlag) { while(stateFlag==WRITER_FLAG) for(i=0;imInt; int busyTime=10000; float tmp; int i; while(gRunFlag) { while(stateFlag==READER_FLAG) for(i=0;i

测试结果: (如图2)

图2

2.5 几点说明:

2.5.1 主调用程序在结束时使用Sleep(5000)的意图在于:使得由它所产生的子线程可以在主进程结束之前,完成如资源释放一类的工作。

2.5.2 在随机线程产生测试程序中:

之所以采用在每个线程内部用

srand((unsigned int)time (NULL));

去初始化每个线程,是为了使得所有的线程拥有自己的随机数种子,否则,如果是在主调用程序中去初始化随机数种子数,则所有的线程得到的随机数序列都是一样的,将无法产生随机效果。

3、应用及推广:

采用这种在Windows下利用控制台调用Windows API进行操作系统实验的方法,具有代码简洁,观察效果好与实现目标接近等优点。

搜索更多关于: 利用API在Windows下创建进程和线程 的文档
利用API在Windows下创建进程和线程.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c86gj49ktng9sc9l3qczs_3.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top