好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

《多核程序设计》实验指导书v1.16.pdf

52页
  • 卖家[上传人]:luoxia****01802
  • 文档编号:47418850
  • 上传时间:2018-07-02
  • 文档格式:PDF
  • 文档大小:1.07MB
  • / 52 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 《多核程序设计》实验指导书《多核程序设计》实验指导书 大连东软信息学院大连东软信息学院 目目 录录 实验一实验一 ::Windows*Threads多线程编程多线程编程........................... - 2 - 模块一:基础练习..............................................................................................................- 5 - 模块二:临界区实验..........................................................................................................- 9 - 模块三:事件实验............................................................................................................- 12 - 模块四:信号量实验........................................................................................................- 16 - 实验二实验二 ::OpenMP多线程编程多线程编程........................................ - 21 - 模块一:基础练习............................................................................................................- 23 - 模块二:数值积分计算Pi值 ............................................................................................- 26 - 模块三:Monte Carlo计算Pi值........................................................................................- 28 - 实验三:多线程编程方法学实验三:多线程编程方法学............................................. - 31 - 模块一: Intel VTune和Intel Thread Checker的使用.....................................................- 32 - 模块二: 多线程编程综合练习......................................................................................- 41 - 实验四实验四 :多线程编程综合实验:多线程编程综合实验....................................... - 49 - - 1 - 实验一实验一 ::Windows*Threads多线程编程多线程编程 本实验分为四个模块;分别为基础练习,临界区实验,事件实验,信号量实验。

      通过本次实验逐步熟悉和掌握 Win32 API 多线程编程的语法结构、基本思路和方法理解 API 之间的调用关系,参数的含义 【实验学时】【实验学时】 8 学时 【实验目的】【实验目的】 掌握Microsoft Visual Studio 编写编译Win32 API多线程程序的方法 掌握Win32 API编写多线程程序的语法 掌握Win32 API编写多线程程序的思路 掌握Win32 多线程API的应用 能解决简单的数据竞争 【实验环境】【实验环境】 Windows XP 系统 Microsoft Visual Studio 2005 【相关知识】【相关知识】 ? 内核对象的概念:由操作系统内核分配的,只能由内核访问的一个内存块,用来供系统和应用程序使用和管理各种系统资源 ? Windows 多线程 API 的基本管理 线程的创建: HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId); - 2 - 线程的终止: VOID ExitThread(DWORD dwExitCode) BOOL CloseHandle (HANDLE hObject) 线程的挂起与恢复: DWORD SuspendThread(HANDLE hThread) DWORD ResumeThread(HANDLE hThread) 线程间的等待: DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds); DWORD WaitForMultipleObjects ( DWORD nCount, CONST HANDLE *lpHandles, BOOL fWaitAll, DWORD dwMilliseconds); ? 线程间的同步 与临界区相关的 API: void WINAPI InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection); void WINAPI EnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection); void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection); void WINAPI DeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection); 与事件相关的 API: HANDLE CreateEvent( LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCSTR lpName); DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds); - 3 - DWORD WaitForMultipleObjects ( DWORD nCount, CONST HANDLE *lpHandles, BOOL fWaitAll, DWORD dwMilliseconds); BOOL SetEvent(HANDLE event ); BOOL ResetEvent(HANDLE event ); 与信号量相关的 API: HANDLE CreateSemaphore( LPSECURITY_ATTRIBUTES lpEventAttributes, LONG lSemInitial, LONG lSemMax, LPCSTR lpSemName); DWORD WaitForSingleObject( HANDLE hHandle, DWORD dwMilliseconds); DWORD BOOL ReleaseSemaphore( HANDLE hSemaphore, LONG cReleaseCount, LPLONG lpPreviousCount); 【实验内容】【实验内容】 - 4 - 模块一:基础练习模块一:基础练习 本实验是基础练习模块。

      实验步骤:实验步骤: 1 用Microsoft Visual Studio 2005创建控制台项目HelloThreads 2 创建HelloThreads.cpp文件,内容如下: #include “stdafx.h“ #include #include const int numThreads = 4; DWORD WINAPI helloFunc(LPVOID pArg) { printf(“Hello Thread \n“); return 0; } int _tmain(int argc, _TCHAR* argv[]) { HANDLE hThread[numThreads]; int tNum[10]; for (int i = 0; i HelloThreads属性属性菜单,按图1-1~图1-4配置项目属性 图1-1. 项目属性设置 – C/C++ Folder – Debug Options 图1-2 项目属性设置 – C/C++ Folder – Optimization Options - 6 - 图1-3 项目属性设置 – C/C++ Folder –Thread-safe Libraries Options 图1-4 项目属性设置 – Linker –Generate Debug Info 4 编译执行, 输出结果: 5 修改代码,使之输出结果为: Hello Thread 0 Hello Thread 1 Hello Thread 2 Hello Thread 3 - 7 - 简答与思考:简答与思考: 1 写出修改后的HelloThreads的代码。

      2 实验总结 - 8 - 模块二:临界区实验模块二:临界区实验 本模块将以数值积分的方法计算 Pi 的值,采用 Win32 API 来实现程序的并行化 实验步骤:实验步骤: 1 用Microsoft Visual Studio 2005创建控制台项目WinPi 2 创建WinPi.cpp,内容如下: #include “stdafx.h“ #include #include static long num_steps=100000; double step, pi; int _tmain(int argc, _TCHAR* argv[]) { int i; double x, sum = 0.0; step = 1.0/(double) num_steps; for (i=0; i #include #include #include #include #define NUMTHREADS 4 #define SERIES_MEMBER_COUNT 100000 HANDLE *threadHandles, masterThreadHandle; CRITICAL_SECTION countCS; double *sums; double x = 1.0, res = 0.0; int threadCount = 0; double getMember(int n, double x) { double numerator = 1; for( int i=0; i #include FILE *fd; int TotalEvenWords = 0, TotalOddWords = 0, TotalWords =。

      点击阅读更多内容
      相关文档
      2025 年上半年全国计算机技术与软件专业技术资格(水平)考试《信息系统项目管理师(高级)》上午场 【综合知识】真题及答案解析(第二批次).docx 2024年下半年计算机软考《系统集成项目管理工程师(中级)》综合知识真题及答案解析(第2批次).docx 2024 年下半年全国计算机【技术与软件专业技术资格(水平)】考试《系统集成项目管理工程师(中级)》案例分析真题及答案解析(第 3 批次).docx 2024 年下半年全国计算机【技术与软件专业技术资格(水平)】考试《系统集成项目管理工程师(中级)》综合知识真题精选及答案解析(第 1 批次).docx 计算机等级考前测试(一级二级适用).doc 2022年12月青少年软件编程Python等级考试试卷四级真题(含答案和解析).docx 2022年12月青少年软件编程Python等级考试试卷三级真题(含答案和解析).docx 2024年6月青少年软件编程Python等级考试试卷六级真题(含答案).docx 2024年6月青少年软件编程Python等级考试试卷四级真题(含答案).docx 2024年6月青少年软件编程Python等级考试试卷一级真题(含答案和解析).docx 2024年3月青少年软件编程Python等级考试试卷五级真题(含答案).docx 2024年3月青少年软件编程Python等级考试试卷六级真题(含答案和解析).docx 2024年6月青少年软件编程Python等级考试试卷五级真题(含答案).docx 2024.03全国青年软件编程(Python)等级考试试卷(二级).docx 2024年6月青少年软件编程Python等级考试试卷三级真题(含答案).docx 2024年3、6、9月青少年软件编程Python等级考试一级真题(全3套 含答案).doc 2024年3月、6月、9月青少年软件编程Python等级考试试卷四级真题(全3套 含答案).doc 2024年3月、6月、9月青少年软件编程Python等级考试试卷六级真题(全3套 含答案).doc 2024年3月、6月、9月青少年软件编程Python等级考试试卷三级真题(全3套 含答案).docx 2024年3月-6月-9月青少年软件编程Python等级考试五级真题试卷(全3套 含答案).doc
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.