关于线程和进程

bobit 2002-12-03 01:22:49
对进程的理解就是运行着的程序,那么我们用Dephi新建一个Application后直接运行是不是就生成了一个进程?

那么线程呢,我一直都只知道他是CPU运行程序的最小单位,那么上一个进程是否在运行时有几个线程呢,到底是哪几个

请朋友说说它们二者的根本区别
...全文
50 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnsuyong 2002-12-04
  • 打赏
  • 举报
回复
呵呵,Delphi也送了WinSight。
yczyk 2002-12-03
  • 打赏
  • 举报
回复
好象有一个查询线程的微软的东东叫什么Spy的,就那什么间谍来着!学VC的人真是幸福啊,什么东西信手拈来,这Spy也是VC赠品!
bobit 2002-12-03
  • 打赏
  • 举报
回复
还有要补充的吗
cnsuyong 2002-12-03
  • 打赏
  • 举报
回复
哈喽啊,饭已OK啦,快去MIXI吧。
祝大家好心情!
学习中...
alphax 2002-12-03
  • 打赏
  • 举报
回复
不是的
bobit 2002-12-03
  • 打赏
  • 举报
回复
哦,但我刚刚看到有朋友说Delphi Application 在运行时产生三个线程啊:

Application
MainForm
输入法
alphax 2002-12-03
  • 打赏
  • 举报
回复
自己写代码解决
bobit 2002-12-03
  • 打赏
  • 举报
回复
在多线程同步执行时如果同时访问临界区那肯定会产生冲突啊,是自己写代码解决还是Delphi IDE提供呢
alphax 2002-12-03
  • 打赏
  • 举报
回复
对于共享冲突,需要你自己写代码解决
alphax 2002-12-03
  • 打赏
  • 举报
回复
我也在学习这个,我把我的理解说说:
我听说进程是一个容器,是一个操作系统的核心对象,但是它不是执行的代码,但是它指向一个应用程序。线程才是干活的东西。只有进程分配后,主线
程运行后,才会创建Application对象。至于其他线程,需要你显式地创建他们。如果你的代码(包括控件的代码)没有创建线程,那么你的程序只有一个
线程,就是主线程:program文件的begin .. end. 如果没有特别的需要,尽量避免使用第二个线程,线程会增加程序的复杂性,难于调试。但是,编制服务器程序的时候,线程通常又很难避免
bobit 2002-12-03
  • 打赏
  • 举报
回复
那么共享时会有冲突啊,是自己写代码解决还是Delphi IDE提供呢
happyzsl 2002-12-03
  • 打赏
  • 举报
回复
http://www.csdn.net/develop/article/15/15271.shtm进程和线程,线程和消息队列,他们之间确实是有包含的关系。 如果让我按大小排序,我会排成象题目的那样。( 不过大概有人会说,消息队列怎么能跟进程、线程混为一谈呢?)

简单的来说,什么是进程?什么是线程?打个比方,你的程序要执行,操作系统就会把你的 exe 文件加载到内存中,那就生成一个进程了(当然还包含分配到的资源等); 对于线程,你可以理解成是一个程序里的不同部分,这有点类似函数,所不同的是各个线程是同时执行的。 例如,你的主线程创建了另一个副线程,那么这两个线程是同时在工作的,不存在 调用 - 返回 的概念。 一个进程里可以有多个线程在执行,称为执行实例。

根据我的理解,进程应该是比较大的概念, 一个进程开始时至少会有一个主线程 ( 即主执行实例 ) ,这是在系统加载你的程序的时候所创建的主执行流程。一般对外部来说只能看到进程,例如在 Win2000 的任务管理器里面查看到的只有进程 ( Process ) 而已。

用 Ctrl + Shift + ESC 可以在 Win2000 里调出任务管理器。

而消息队列则是与线程 ( Thread ) 相关的,换句话说,一个线程只能有一个消息队列 ( queue ) 与之相对应。 这跟之前说的有点不同,一个进程里面可以有多个线程;但是一线程里面就不能超出一个消息队列 ( Win98 里面甚至可以没有消息队列 )。

消息队列是在什么时候生成的呢? 在 Win2000 里面,从一开始创建线程就已经有了。( 在 Win98 里,我估计是在创建过窗口之后,留给你去证实 )

说了半天,可能一些刚入门的朋友还不知道什么是消息队列呢? 其实,Windows 操作系统是一个基于事件驱动的系统。它把握诸如鼠标,键盘输入等东西化为事件代号,发送到你的程序的消息队列里面去,你的程序则每次提取一个事件,根据事件的性质执行相应的操作,不断循环而已。

微软提倡编程人员使用事件驱动的编程方法。 你也可以向自己线程的消息队列里发送假消息,自己骗自己也是可以的 ( 虚伪 ) !使用 PostThreadMessage 函数即可。

编出多线程的程序其实并不难,难点其实在于线程同步 ( 线程间协调工作 ),下面的源程序正是为了简单介绍多线程编程的。



SilveryFox 2002-12-03
  • 打赏
  • 举报
回复
dll的运行即使线程
happyzsl 2002-12-03
  • 打赏
  • 举报
回复
新建一个Application后,Application是一个进程,并且拥有一个主线程,你可以自己再新建多个线程,共用进程的资源

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧