对进程的理解就是运行着的程序,那么我们用Dephi新建一个Application后直接运行是不是就生成了一个进程?那么线程呢,我一直都只知道他是CPU运行程序的最小单位,那么上一个进程是否在运行时有几个线程呢,到底是哪几个请朋友说说它们二者的根本区别

解决方案 »

  1.   

    新建一个Application后,Application是一个进程,并且拥有一个主线程,你可以自己再新建多个线程,共用进程的资源
      

  2.   

    http://www.csdn.net/develop/article/15/15271.shtm进程和线程,线程和消息队列,他们之间确实是有包含的关系。  如果让我按大小排序,我会排成象题目的那样。( 不过大概有人会说,消息队列怎么能跟进程、线程混为一谈呢?)    简单的来说,什么是进程?什么是线程?打个比方,你的程序要执行,操作系统就会把你的 exe 文件加载到内存中,那就生成一个进程了(当然还包含分配到的资源等); 对于线程,你可以理解成是一个程序里的不同部分,这有点类似函数,所不同的是各个线程是同时执行的。  例如,你的主线程创建了另一个副线程,那么这两个线程是同时在工作的,不存在 调用 - 返回 的概念。  一个进程里可以有多个线程在执行,称为执行实例。    根据我的理解,进程应该是比较大的概念, 一个进程开始时至少会有一个主线程 ( 即主执行实例 ) ,这是在系统加载你的程序的时候所创建的主执行流程。一般对外部来说只能看到进程,例如在 Win2000 的任务管理器里面查看到的只有进程 ( Process ) 而已。    用 Ctrl + Shift + ESC 可以在 Win2000 里调出任务管理器。    而消息队列则是与线程 ( Thread ) 相关的,换句话说,一个线程只能有一个消息队列 ( queue ) 与之相对应。   这跟之前说的有点不同,一个进程里面可以有多个线程;但是一线程里面就不能超出一个消息队列 ( Win98 里面甚至可以没有消息队列 )。    消息队列是在什么时候生成的呢? 在 Win2000 里面,从一开始创建线程就已经有了。( 在 Win98 里,我估计是在创建过窗口之后,留给你去证实 )    说了半天,可能一些刚入门的朋友还不知道什么是消息队列呢?  其实,Windows 操作系统是一个基于事件驱动的系统。它把握诸如鼠标,键盘输入等东西化为事件代号,发送到你的程序的消息队列里面去,你的程序则每次提取一个事件,根据事件的性质执行相应的操作,不断循环而已。    微软提倡编程人员使用事件驱动的编程方法。    你也可以向自己线程的消息队列里发送假消息,自己骗自己也是可以的 ( 虚伪 ) !使用 PostThreadMessage 函数即可。    编出多线程的程序其实并不难,难点其实在于线程同步  ( 线程间协调工作 ),下面的源程序正是为了简单介绍多线程编程的。
        
      

  3.   

    那么共享时会有冲突啊,是自己写代码解决还是Delphi IDE提供呢
      

  4.   

    我也在学习这个,我把我的理解说说:
    我听说进程是一个容器,是一个操作系统的核心对象,但是它不是执行的代码,但是它指向一个应用程序。线程才是干活的东西。只有进程分配后,主线
    程运行后,才会创建Application对象。至于其他线程,需要你显式地创建他们。如果你的代码(包括控件的代码)没有创建线程,那么你的程序只有一个
    线程,就是主线程:program文件的begin .. end. 如果没有特别的需要,尽量避免使用第二个线程,线程会增加程序的复杂性,难于调试。但是,编制服务器程序的时候,线程通常又很难避免
      

  5.   

    在多线程同步执行时如果同时访问临界区那肯定会产生冲突啊,是自己写代码解决还是Delphi IDE提供呢
      

  6.   

    哦,但我刚刚看到有朋友说Delphi Application 在运行时产生三个线程啊:Application
    MainForm
    输入法
      

  7.   

    哈喽啊,饭已OK啦,快去MIXI吧。
    祝大家好心情!
    学习中...
      

  8.   

    好象有一个查询线程的微软的东东叫什么Spy的,就那什么间谍来着!学VC的人真是幸福啊,什么东西信手拈来,这Spy也是VC赠品!