随笔-3  评论-2  文章-0  trackbacks-0

        理解多线程及其同步、互斥等通信方式是理解现代操作系统的关键一环。在多线程程序设计时,我们首先要了解进程和线程的基本概念及它们之间的关系。
         进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。进程是程序在某个数据集上的执行,是一个动态实体。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消,反映了一个程序在一定的数据集上运行的全部动态过程。
         线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位。线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
         线程和进程的关系是:线程是属于进程的,线程运行在进程空间内,同一进程所产生的线程共享同一内存空间,当进程退出时该进程所产生的线程都会被强制退出并清除。线程可与属于同一进程的其它线程共享进程所拥有的全部资源,但是其本身基本上不拥有系统资源,只拥有一点在运行中必不可少的信息(如程序计数器、一组寄存器和栈)。每个进程具有独立的地址空间,而该进程内的所有线程共享该地址空间。
        常用的进程间通信(IPC)机制有:(1)剪贴板(Clip Board);(2)动态数据交换(Dynamic Data Exchange);(3)组件对象模型(Component Object Model);(4)文件映射(File Mapping);(5)邮件槽(Mail Slots);(6)管道(Pipes);(7)Win32套接字(Socket);(8)远程过程调用(Remote Procedure Call);(9)WM_COPYDATA消息(WM_COPYDATA Message)。
         WIN32靠线程的优先级(达到抢占式多任务的目的)及分配给线程的CPU时间来调度线程。多线程调度的机制为:
 1)运行一个线程,直到被中断或线程必须等待到某个资源可用;
 2)保存当前执行线程的描述表(上下文);
 3)装入下一执行线程的描述表(上下文);
 4)若存在等待被执行的线程,则重复上述过程。
         WIN32核心对象包括进程、线程、文件、事件、信号量、互斥体和管道,核心对象可能有不只一个拥有者,甚至可以跨进程。WIN32线程控制主要实现线程的创建、终止、挂起和恢复等操作,这些操作都依赖于WIN32提供的一组API和具体编译器的C运行时库函数。线程之间通信的两个基本问题是互斥和同步。在WIN32中,同步机制主要有以下几种:(1)事件(Event);(2)信号量(semaphore);(3)互斥量(mutex);(4)临界区(Critical section)。

posted on 2007-04-16 12:46 风网 阅读(300) 评论(0)  编辑 收藏 引用 所属分类: 多线程/动态连接

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理