- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
并行计算-周煜远
浙江工商大学计算机与信息工程学院
10-11(1) 学期 上机实验报告
课程名称: 并行计算及应用 姓 名: 周煜远 学 号: 1020000353
指导教师: 王慧燕 班 级: 计软10 日 期: 2010-12-24
【一】上机实验内容及要求:
实验内容如下:
用_beginthread创建两个线程,互发消息问候。
用CreateThread创建两个线程,互发消息问候,当输入为0时,执行线程,否则挂起线程。
创建一个新的线程,由新的线程实现求1-1000的和,并打印输出,执行完后,通知主线程,由主线程输出“Thread computation is over!”(要求用全局变量同步进制实现)。
创建三个新的线程,由三个线程分别实现求1-1000、1000-2000及2000-3000的和,并依次将部分和打印输出,执行完后,通知主线程,由主线程输出“Threads computation is over!” (要求用事件同步进制实现)。
假如一个银行系统有两个线程执行取款任务,一个使用存折在柜台取款,一个使用银行卡在ATM取款。若不加控制,很可能账户余额不足两次取款的总额,但还可以把钱取走。(用临界区同步进制实现上述题目,保证不会出现100元可以取走110元的情况)。
创建三个新的线程,由三个线程分别调用同一个函数实现求1-10、10-20及20-30的和,并分别将部分和打印输出。(要求用互斥量同步进制实现)。
用信号量同步进制实现第6题。
要求:自学“Windows多线程编程”内容,掌握Win32 API多线程编程技巧。
掌握并熟悉常用的Win32函数库中操作多线程的函数,包括CreateThread、_beginthread、SuspendThread、ResumeThread、WaitForSingleObject、WaitForMultipleObject、ExitThread、CreateEvent、SetEvent、OpenEvent、InitializeCriticalSection、EnterCriticalSection、LeaveCriticalSection、CreateMutex、OpenMutex、ReleaseMutex等的用法。
学会编程实现线程的创建、管理、终结及全局变量、事件、临界区、互斥量、信号量等机制下线程同步的实现方法。
参考资料:互联网络、MSDN、参考书等。
完成实验内容,并撰写实验报告。实验报告内容包括:每个题目涉及的知识点、运行情况(包括输入、输出)、存在的问题及解决的途径等。
【二】完成报告(预备知识、步骤、程序框图、程序、思考等):
答: 运用_beginthread创建两个线程,分别打印出消息。代码如下,
// Testhdj.cpp : Defines the entry point for the console application.
#include stdafx.h
// define _MT so that _beginthread( ) is available
#ifndef _MT
#define _MT
#endif
#include stdio.h
#include windows.h
#include process.h
typedef struct _ThreadParam
{
int m_nID;
char m_szName[128];
}ThreadParam;
// global flag
bool bDone = false;
// this function is called by a new thread
void InputThreadProc( void *dummy )
{
ThreadParam *Param = (ThreadParam*)dummy;
while(!bDone)
{
::Sleep(1000);
printf(%s\n,Param-m_szName);
}
}
void main( int argc, char** argv )
{
ThreadParam Param1,Param2;
Param1.m_nID = 1;
strcpy(Param1.m_szName,I am thread 1, nice to meet you!);
Param2.m_nID = 2;
strcpy(Param2.m_szName,I am thread 2, nice to meet you!);
printf(Hello, world of console apps.\n);
// crea
文档评论(0)