
多线程
jeromeyu
这个作者很懒,什么都没留下…
展开
-
多线程简单概念
<br />进程:<br /> 从Win32的角度来看,进程含有内存和资源。被进程拥有的内存,理论上可以高达2GB。资源则包括核心对象(如file hansles和线程)、USER资源(如对话框和字符串)、GDI资源(如Device Context和brushes)。<br /> 进程就像一本活页笔记夹,你可以在其中的活页上写东西,也可以擦掉内容或甚至整页撕掉,活页笔记夹只是持有那些东西而已。同理,进程本身并不能够执行,它只是提供一个安置内存和线程的地方。<br />内存:<br /原创 2010-07-26 23:19:00 · 390 阅读 · 0 评论 -
线程的第一次接触
<br />线程的第一次接触<br />1. 产生一个线程<br />HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,DWORD dwStackSize,LPTHREAD-START_ROUTINE lpStartAddress,LPVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId);<br />参数:lpThreadAttributes:描述施行于这一新线原创 2010-07-30 00:17:00 · 618 阅读 · 0 评论 -
进程与线程
进程是资源调度的最小单位,线程是调度运行的最小单位。进程是一大堆对象的拥有权的集合,包括内存、核心对象(如file handles和线程)、用户资源(如对话框和字符串)、GDI资源(如Device Context和brushes)。定义一个线程,所需的数据并不多,线程在任意时刻的状态被定义在进程的某块内存中,以及CPU寄存器中,其他数据,储存在可被所有进程共享的内存内。 引入线程的好处: 1.原创 2012-06-10 15:15:02 · 371 阅读 · 0 评论 -
多线程程序设计的成功关键
1.各线程的数据要分离开来,避免使用全局变量。 2.不要再线程之间共享GDI对象。 3.确定你知道你的线程状态,不要径自结束程序而不等待它们的结束。 4.让主线程处理用户界面。转载 2012-06-10 17:06:30 · 414 阅读 · 0 评论 -
线程同步控制
1. Critical Section(关键区域、临界区域) 指一小块“用来处理一份被共享之资源”的程序代码。一次只能有一个线程获准访问资源。千万不要在一个critical section中调用Sleep()或任何Wait…()API函数。 主要函数:InitializeCriticalSection(LPCRITICAL_SECTION lpCriticalSection); D原创 2012-06-11 21:25:16 · 407 阅读 · 0 评论 -
Overlapped I/O
Overlapped I/O是Win32的一项技术,你可以要求操作系统给你传送数据,并且在传送完毕时通知你,这项技术使你的程序在I/O进行过程中仍然能够继续处理事务。 其中I/Ocompletion ports特别显得重要,因为他们是唯一适用于高负载服务器(必须同时维护许多连接线路)的一个技术。 Win32中有三个基本的函数用来执行I/O,他们是CreateFile(),ReadFile(),原创 2012-06-16 10:41:10 · 906 阅读 · 0 评论 -
GDI对象与核心对象
核心对象有Kerne32.dll管理,以HANDLE为使用时的参考依据。所谓handle,其实是个指针,只像操作系统内存空间中的某样东西,那东西不允许你直接取得,你的程序不能够直接取用它,是为了维护系统的完整性与安全性。Win32核心对象包括:进程、线程、文件、事件、信号量、互斥器、管道。 GDI对象由GDI32.dll管理。 GDI对象和核心对象之间有一个主要的不同。GDI对象有单一拥有者,原创 2012-06-10 15:34:58 · 623 阅读 · 0 评论 -
I/O Completion ports
I/O Completion ports是一种非常特殊的核心对象,用来综合一堆线程,让它们为“overlapped请求”服务,其所提供的功能甚至可以跨越多个CPU,Completion port可以自动补偿成长中的服务器,适合应用于沉重的负担。 解决了overlapped I/O中遇到的问题: (1) 与WaitForMultipleObjects()不同,原创 2012-06-17 21:16:11 · 1067 阅读 · 0 评论