听说这本书很权威,在世界范围内都有很高的评价,但我却看不出来哪里好?我看这本书也看了6章了,而且不下3便,到现在为止我还是对进程,线程,一知半解。例如:
1 进程:我在一个WINMAIN程序中掉用一个CreateProcess函数,书上的说发是生成了一个新的进程,而且这个进程是被WINMAIN程序所有的,我想要问的是这个新生成的进程是什么?是个窗口,还是一个对话筐?根绝书上的说法进程好象是一个.EXE文件。还有就是进程有父子关系,但是一个.EXE文件有子.EXE文件的吗?就算有的话生成子进程的函数跟生成其他进程的函数是一样的如何区别呢?
2 线程:我实在不明白在一个程序中生成一个线程有什么用?听说能同时执行多项任务,我个人认为假如是在一个CPU上的话就不需要呀,因为他无法做到真正的同时执行,他还是只能分配时间片呀。而且线程的产生需要别的线程掉用CreateTheard,而且还只能在这个线程中使用他的句柄。有些问题我都不知道怎么提出来了,因为实在对他无法理解呀。
请看明白了《windows核心编程》的高手指点一二。非常感谢中
1 进程:我在一个WINMAIN程序中掉用一个CreateProcess函数,书上的说发是生成了一个新的进程,而且这个进程是被WINMAIN程序所有的,我想要问的是这个新生成的进程是什么?是个窗口,还是一个对话筐?根绝书上的说法进程好象是一个.EXE文件。还有就是进程有父子关系,但是一个.EXE文件有子.EXE文件的吗?就算有的话生成子进程的函数跟生成其他进程的函数是一样的如何区别呢?
2 线程:我实在不明白在一个程序中生成一个线程有什么用?听说能同时执行多项任务,我个人认为假如是在一个CPU上的话就不需要呀,因为他无法做到真正的同时执行,他还是只能分配时间片呀。而且线程的产生需要别的线程掉用CreateTheard,而且还只能在这个线程中使用他的句柄。有些问题我都不知道怎么提出来了,因为实在对他无法理解呀。
请看明白了《windows核心编程》的高手指点一二。非常感谢中
解决方案 »
- 请问\350\257\267\346\202\250\这是种什么形式的编码?
- vc2005中,怎样每次release让程序的版本递增?
- onchange和onpropertychange详细区别
- 删除二进制文件中某段数据?
- 急!VC编译结果:cannot open file '.\Debug\StdAfx.sbr':什么错啊?
- 斑竹帮帮忙~~急等
- 如何取消任务栏总在最前面的选项(100分,在线等...)
- 如何在2000下再安装DOS系统?
- 急!郁闷,各位师兄哪位会数字图像处理的呀?帮帮忙。
- 关于输入法状态的问题
- 好心人帮我看看啊
- 有SQL语句更改ACCESS数据表 一个字段的长度,为什么出错?idispach error #3092
先看看MSDN,了解一下基本概念。
1、进程应该是一个可以独立运行的程序单元,系统中的进程它们会相互竟争有限的资源,如处理器、存储器、设备等。一个程序可能有很多进程,但只有一个主进程。
2、任何一个进程都有一个主线程,它的启动不是在一个线程中启动的,在一般的函数里也一样可以启动;至于句柄,只要在它的作用域内都可能使用它来控制相应的线程;多个线程采用时间片轮转法来分配CPU,我们是觉察不到的,就好像运行在多个CPU上一样,对于复杂耗时的工作让它来做最合适了。如果说的有不对之处,还望高手批评指正。。
进程不一定有窗口,例如你的WINDOWS操作系统里就有很多的服务进程,但它们很多都是没有窗体的,只是提供一种服务或是一种处理。
所谓进程父子性不是指子.exe,只不过是指明了某一进程创建了另一进程而已,在物理上这两个进程不一定有父子关系,但它们在当时运行时有那种逻辑的关系而已,以方便属性的继承等等。
线程:CPU时间都要排队争夺的,一个进程生成后都会有一个主线程,一个进程如果只有一个线程,那么这个进程在某个时间内只能做一件事,并且只能把这件事做完了才能进行别的任务,如果生成一个线程进行某种处理独立去竞争CPU时间,主线程就可以继续进行别的任务。举个例子你就知道生成线程的重要性:假如你做了个窗口程序,单击某个按钮后开始执行某项长时间的计算任务,如果你在主线程完成,你就得等待长时间而无法再对窗口的其它功能操作,生成一个计算线程的话你就可以继续对窗口进行操作了。
很好的 感受一下
勿在浮沙筑高台!
还有:山高月小,水落石出!学习是一步一个脚印慢慢来!线程的好处在于:你可以边上网边听MP3!
正因为线程的时间片(进程对于系统而言也是线程),线程之间的切换(时间片按毫秒计),才可以让你感觉同时可以做多个事情(虽然只有一个CPU),即任务间的频繁切换给人以快捷的感觉,如果听MP3就不可以做别的事了,那就没人用Windows了举个例子,去商店买东西,你去的时候售货员正在跟另一个顾客说话,此时你过去了,
他转头问你:先生,你需要买什么吗?
你说:噢,我买XXX
他说:请稍后,我马上就好这时你心里很舒服,如果不是这样,而是:你过去了说:售货员,我买XXX
售货员…………没睬你
你大声又说了遍,
售货员转头对你说:吵什么,没看我忙着呢,慢慢等着呵呵,你觉得哪个售货员给顾客的感觉好呢?
其实,PC的用户是一样的!
2.线程的使用:打个比方你去麦当劳买东西吃,如果只有一个柜台接受服务会怎么样呢?
如果是多个柜台又会如何?当然cpu的时间是分片分时使用,但在逻辑关系中如果你的线程需要等待某个事件或者结果的到来,这时cpu时间实际可能在空闲状态,而同一线程中的后续逻辑就会被阻塞,这时开辟另一个线程就可以很好的来处理了
线程: 进程内部的利用CPU的时间片切换, 相当于同时运行的内部模块.应该看些操作系统方面的东西.
你最好先看看<操作系统>,<计算机原理>
最好自己做一个模拟操作系统,对你理解什么是计算机,计算机是怎么工作的很有帮助!
当时学习时也没有感觉多有用.现在感觉这些知识对人的影响是潜移默化的!
1。进程:一个进程基本上是一个正在执行的程序,它包括可执行的程序、程序数据与栈、有关程序计数器、栈指针、其他寄存器以及所有运行程序所需要的所有信息。
(《现代操作系统 Modern Operating Systems》 Andrew S.Tanenbum 陈向群等译 P8)
2。生成进程的函数是操作系统的底层函数,例如:在UNIX中,进程建立可以通过以下一组系统调用来进行:
(1)fork系统调用——建立子进程
新进程由父进程的的地址空间(包括代码、数据、栈、现场、管理信息等)的一个复制构成
父子进程都从fork后的那条指令继续执行。
(2)exex系统调用——以制定程序覆盖当前进程的程序代码
(3)wait系统调用——等待指定进程结束
3。线程的作用:举个例子,先考察一个文件服务器(进程),它由于等待盘操作而经常被阻塞。若服务器有多个线程,则第一个线程被睡眠时另一个线程可以继续运行(接收新的文件请求服务)。这样的好处是,文件的吞吐率和性能都提高了。线程可以称为轻量级进程,线程切换和建撤的开销大大小于进程。
哥们我就是这样过来的,,,,,,,
但我觉得你在以上高手意见基础上
c/c++也要有相当的基础
我想问一下
各位高手是光看不炼
如高手练过了
里面的代码都通了吗?
如没有
先练c/c++/asm吧
那是你还没用到!
举个例子吧(例子!),
主程序运行过程中,同时还要播放几首mp3背景音乐,窗口背景还要变换几种3D图形 ,而你的主程序干的是网络交易。
开个线程就好办了。