实验一、 Window s 多线程编程基础 一、实验目的 1、掌握 MS Visual Studio 集成开发环境的使用与配置; 2、掌握利用 Windows API 函数进行多线程编程; 3、掌握利用 MS Visual C++ MFC 类库进行多线程编程; 4、掌握利用 MS Visual Studio 集成开发环境编写、调试和运行 Windows 多线程程序。 二、实验原理 线程是进程的一条执行路径,它包含独立的堆栈和 CPU 寄存器状态,每个线程共享所有的进程资源,包括打开的文件、信号标识及动态分配的内存等。一个进程内的所有线程使用同一个地址空间,而这些线程的执行由系统调度程序控制,调度程序决定哪个线程可执行以及什么时候执行线程。线程有优先级别,优先权较低的线程必须等到优先权较高的线程执行完后再执行。在多核的机器上,调度程序可将多个线程放到不同的处理器核上去运行,这样可使处理器任务平衡,并提高系统的运行效率。 Windows 是一种多任务的操作系统,在 Windows 的一个进程内包含一个或多个线程。32 位 Windows 环境下的 Win32 API 提供了多线程应用程序开发所需要的接口函数,而利用 VC 中提供的标准 C 库也可以开发多线程应用程序,相应的 MFC 类库封装了多线程编程的类,用户在开发时可根据应用程序的需要和特点选择相应的工具。 多线程编程在 Win32 方式下和 MFC 类库支持下的原理是一致的,进程的主线程在任何需要的时候都可以创建新的线程。当线程执行完后,自动终止线程;当进程结束后,所有的线程都终止。所有活动的线程共享进程的资源,因此,在编程时需要考虑在多个线程访问同一资源时产生冲突的问题。当一个线程正在访问某进程对象,而另一个线程要改变该对象,就可能会产生错误的结果,编程时要解决这个冲突。 三、实验内容及步骤 1、按照“附录一”中的要求,配置好 Visual Studio 编译环境; 2、在 MS Visual C++集成开发环境中调试\Lab2\ HelloThreads\HelloThreads1,并指出程序的主要功能; #include #include using namespace std; DWORD WINAPI FunOne(LPVOID param){ while(true) { Sleep(1000); cout<<"hello!"<