[Win32基础]多线程相关概念
2012-12-24 23:40
351 查看
同时性:指两个或两个以上事件在同一时刻发生。
并发性:指两个或两个以上事件在同一时间间隔发生。
进程是操作系统资源分配的单位。
线程是操作系统执行的单位。同一进程中的两段代码不能同时执行,除非引入线程。
线程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大的提高了程序的执行效率。
只有在多个CPU的计算机上,多个线程才能够真正的同时运行。然而,操作系统把CPU的时间分成很短的时间片分配给每个线程,这样给人的感觉好像是多个线程真的同时在运行
线程间的同步方法大体分两类:用户模式(临界区(CriticalSection))和内核模式(事件(Event),信号量(Semaphore),互斥量(Mutex))。
线程互斥:是在对于共享的进程系统资源,在各单个线程访问时的排他性。是一种特殊的线程同步。
小demo
结果
并发性:指两个或两个以上事件在同一时间间隔发生。
进程是操作系统资源分配的单位。
线程是操作系统执行的单位。同一进程中的两段代码不能同时执行,除非引入线程。
为什么要引入线程?
进程与进程之间的通信时十分慢的(网络编程)。因为进程管理分配很多资源,所以转换起来很慢,就这样线程产生了,它是比进程更小的单位。一个进程中只要有一个或多个线程,每个线程之间的通信相对进程而言,则快了很多,因为线程只涉及到CPU的资源分配。一个进程里的线程是可以相互通信的,但不同的进程之间的线程是不能相互通信的。线程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大的提高了程序的执行效率。
线程的优点
线程在程序中的作用:提供程序的并发性。常用在网络通信,处理前后台,处理异步的情况下。只有在多个CPU的计算机上,多个线程才能够真正的同时运行。然而,操作系统把CPU的时间分成很短的时间片分配给每个线程,这样给人的感觉好像是多个线程真的同时在运行
线程同步
多线程编程的核心就是线程同步。线程同步是指线程之间在相互通信时避免破坏各自数据的能力。也就是对于共享资源,一个线程在某一段时间内是多了占有的。它是由操作系统分配CPU时间片的分配方式引起的。虽然在某一时刻,只有一个线程占有CPU(单CPU)时间,但是没有办法知道在什么时候,在什么地方线程被打断,这样如何保证线程之间不破坏彼此之间的数据就显的格外重要了。线程间的同步方法大体分两类:用户模式(临界区(CriticalSection))和内核模式(事件(Event),信号量(Semaphore),互斥量(Mutex))。
线程互斥:是在对于共享的进程系统资源,在各单个线程访问时的排他性。是一种特殊的线程同步。
小demo
#include <windows.h> #include <iostream> using namespace std; int iData=0; DWORD WINAPI ThreadFun(LPVOID lParam) { int num=(int)lParam; for (int i=0;i<num;i++) { iData=iData++; cout<<iData<<endl; } return 0; } int main() { CreateThread(NULL,0,ThreadFun,(LPVOID)5,0,NULL); CreateThread(NULL,0,ThreadFun,(LPVOID)6,0,NULL); system("pause"); return 0; }
结果
相关文章推荐
- 云计算基础知识-1. 云计算相关概念
- 网络基础概念以相关技术
- C#多线程学习(一) 多线程的相关概念
- C#多线程学习(一) 多线程的相关概念
- 基于Keras的深度学习的相关基础概念的讲解
- .NET多线程编程(10)——多线程的基础概念
- linux设备驱动归纳总结(一):内核的相关基础概念
- Java的多线程机制系列:(一)总述及基础概念
- 安卓基础之相关概念
- 多线程基础-基本概念(一)
- 模型汇总22 机器学习相关基础数学理论、概念、模型思维导图分享
- linux设备驱动归纳总结(二):模块的相关基础概念
- java多线程与高并发库应用(一)线程基础概念
- Java 多线程基础-基本概念
- Java多线程基础概念
- 基于Keras的深度学习的相关基础概念的讲解
- C#多线程学习(一) 多线程的相关概念
- linux设备驱动归纳总结(二):模块的相关基础概念
- C#多线程学习(一) 多线程的相关概念
- 【原】一步一步D3D_1.相关概念的简述(1.3_计算机图形学数学基础和图形变换)