听说这本书很权威,在世界范围内都有很高的评价,但我却看不出来哪里好?我看这本书也看了6章了,而且不下3便,到现在为止我还是对进程,线程,一知半解。例如: 
    
    1 进程:我在一个WINMAIN程序中掉用一个CreateProcess函数,书上的说发是生成了一个新的进程,而且这个进程是被WINMAIN程序所有的,我想要问的是这个新生成的进程是什么?是个窗口,还是一个对话筐?根绝书上的说法进程好象是一个.EXE文件。还有就是进程有父子关系,但是一个.EXE文件有子.EXE文件的吗?就算有的话生成子进程的函数跟生成其他进程的函数是一样的如何区别呢?
    2 线程:我实在不明白在一个程序中生成一个线程有什么用?听说能同时执行多项任务,我个人认为假如是在一个CPU上的话就不需要呀,因为他无法做到真正的同时执行,他还是只能分配时间片呀。而且线程的产生需要别的线程掉用CreateTheard,而且还只能在这个线程中使用他的句柄。有些问题我都不知道怎么提出来了,因为实在对他无法理解呀。
   请看明白了《windows核心编程》的高手指点一二。非常感谢中

解决方案 »

  1.   

    这本书的确算得上权限了,但确实不是入门书籍。
    先看看MSDN,了解一下基本概念。
      

  2.   

    个人理解:
    1、进程应该是一个可以独立运行的程序单元,系统中的进程它们会相互竟争有限的资源,如处理器、存储器、设备等。一个程序可能有很多进程,但只有一个主进程。
    2、任何一个进程都有一个主线程,它的启动不是在一个线程中启动的,在一般的函数里也一样可以启动;至于句柄,只要在它的作用域内都可能使用它来控制相应的线程;多个线程采用时间片轮转法来分配CPU,我们是觉察不到的,就好像运行在多个CPU上一样,对于复杂耗时的工作让它来做最合适了。如果说的有不对之处,还望高手批评指正。。
      

  3.   

    如果你实在不明白, 你可以先去补习一下基础知识, 要不然会很累!进程\线程等都是系统 内核对象, 不是像 "窗体" 这样的概念!至于多线程, 初学者的确很少去接触它, 你说的分配时间片的问题, 可以这样理解假如 CPU 对每一个线程都分配 20ms的片, 那你用多个线程的话, 是不是在每次CPU循环的时候都能获得 n * 20ms的时间片呢.
      

  4.   

    操作系统里有对进程比较入门的介绍
    进程不一定有窗口,例如你的WINDOWS操作系统里就有很多的服务进程,但它们很多都是没有窗体的,只是提供一种服务或是一种处理。
    所谓进程父子性不是指子.exe,只不过是指明了某一进程创建了另一进程而已,在物理上这两个进程不一定有父子关系,但它们在当时运行时有那种逻辑的关系而已,以方便属性的继承等等。
    线程:CPU时间都要排队争夺的,一个进程生成后都会有一个主线程,一个进程如果只有一个线程,那么这个进程在某个时间内只能做一件事,并且只能把这件事做完了才能进行别的任务,如果生成一个线程进行某种处理独立去竞争CPU时间,主线程就可以继续进行别的任务。举个例子你就知道生成线程的重要性:假如你做了个窗口程序,单击某个按钮后开始执行某项长时间的计算任务,如果你在主线程完成,你就得等待长时间而无法再对窗口的其它功能操作,生成一个计算线程的话你就可以继续对窗口进行操作了。
      

  5.   

    1 进程:我在一个WINMAIN程序中掉用一个CreateProcess函数,书上的说发是生成了一个新的进程,而且这个进程是被WINMAIN程序所有的,我想要问的是这个新生成的进程是什么?是个窗口,还是一个对话筐?根绝书上的说法进程好象是一个.EXE文件。还有就是进程有父子关系,但是一个.EXE文件有子.EXE文件的吗?就算有的话生成子进程的函数跟生成其他进程的函数是一样的如何区别呢?要知道进程的作用。其实就是给他开了一快区域,分配了系统资源。在其中可以实现一些功能。    2 线程:我实在不明白在一个程序中生成一个线程有什么用?听说能同时执行多项任务,我个人认为假如是在一个CPU上的话就不需要呀,因为他无法做到真正的同时执行,他还是只能分配时间片呀。逻辑上就很好实现了。否则就通过你自己在一个线程里面实现。可能比较麻烦,有的时候甚至很难实现。
      

  6.   

    装VC了没  上面自带的工具SPY++
    很好的  感受一下
      

  7.   

    侯捷在《深入浅出MFC》里有句话,暂且引用一下
    勿在浮沙筑高台!
    还有:山高月小,水落石出!学习是一步一个脚印慢慢来!线程的好处在于:你可以边上网边听MP3!
    正因为线程的时间片(进程对于系统而言也是线程),线程之间的切换(时间片按毫秒计),才可以让你感觉同时可以做多个事情(虽然只有一个CPU),即任务间的频繁切换给人以快捷的感觉,如果听MP3就不可以做别的事了,那就没人用Windows了举个例子,去商店买东西,你去的时候售货员正在跟另一个顾客说话,此时你过去了,
    他转头问你:先生,你需要买什么吗?
    你说:噢,我买XXX
    他说:请稍后,我马上就好这时你心里很舒服,如果不是这样,而是:你过去了说:售货员,我买XXX
    售货员…………没睬你
    你大声又说了遍,
    售货员转头对你说:吵什么,没看我忙着呢,慢慢等着呵呵,你觉得哪个售货员给顾客的感觉好呢?
    其实,PC的用户是一样的!
      

  8.   

    1.进程和进程间的父子关系是相互控制的一个关系,另子进程将继承父进程中的权限和其他的内核访问权限(建议补习一下进程的概念)
    2.线程的使用:打个比方你去麦当劳买东西吃,如果只有一个柜台接受服务会怎么样呢?
    如果是多个柜台又会如何?当然cpu的时间是分片分时使用,但在逻辑关系中如果你的线程需要等待某个事件或者结果的到来,这时cpu时间实际可能在空闲状态,而同一线程中的后续逻辑就会被阻塞,这时开辟另一个线程就可以很好的来处理了
      

  9.   

    多线程当然有好处,虽然你知道CPU的限制,并不能实现真正意义上的多线程,但是由于时间片之间的切换速度很快,一般人不容易察觉出来,因此,我们一边上网,一边听音乐才成为了可能。
      

  10.   

    process is a runing program(normal in window wes call it as exe com...) when one process it create an other process use createprocess but shellexecute... then the process was created is called to the create process's child process, through the created process is the process's child process's the child process's memory not equal the parent. you can call windows api set when parent termining, termining the child. you are better see the theory  of operate.
      

  11.   

    进程: 一个具有独立内存空间的运行模块.
    线程: 进程内部的利用CPU的时间片切换, 相当于同时运行的内部模块.应该看些操作系统方面的东西.
      

  12.   

    那本书真的不适合初学者,还是先打好基础再说吧!
    你最好先看看<操作系统>,<计算机原理>
    最好自己做一个模拟操作系统,对你理解什么是计算机,计算机是怎么工作的很有帮助!
    当时学习时也没有感觉多有用.现在感觉这些知识对人的影响是潜移默化的!
      

  13.   

    建议楼主补习一下操作系统中关于进程、线程的基本概念,具体实例可从Linux内核源代码获得
    1。进程:一个进程基本上是一个正在执行的程序,它包括可执行的程序、程序数据与栈、有关程序计数器、栈指针、其他寄存器以及所有运行程序所需要的所有信息。
    (《现代操作系统 Modern Operating Systems》 Andrew S.Tanenbum 陈向群等译   P8)
    2。生成进程的函数是操作系统的底层函数,例如:在UNIX中,进程建立可以通过以下一组系统调用来进行:
    (1)fork系统调用——建立子进程
    新进程由父进程的的地址空间(包括代码、数据、栈、现场、管理信息等)的一个复制构成
    父子进程都从fork后的那条指令继续执行。
    (2)exex系统调用——以制定程序覆盖当前进程的程序代码
    (3)wait系统调用——等待指定进程结束
    3。线程的作用:举个例子,先考察一个文件服务器(进程),它由于等待盘操作而经常被阻塞。若服务器有多个线程,则第一个线程被睡眠时另一个线程可以继续运行(接收新的文件请求服务)。这样的好处是,文件的吞吐率和性能都提高了。线程可以称为轻量级进程,线程切换和建撤的开销大大小于进程。
        
      

  14.   

    推荐您去看《windows操作系统原理》和它的试验教程(葵花宝典--答案!!),然后试着将里面的C++程序用VC++.net写一遍,我想兄弟您就明白了,哈哈!!
    哥们我就是这样过来的,,,,,,,
      

  15.   

    我是一个别windows 盲
    但我觉得你在以上高手意见基础上
    c/c++也要有相当的基础
    我想问一下
    各位高手是光看不炼
    如高手练过了
    里面的代码都通了吗?
    如没有
    先练c/c++/asm吧
      

  16.   

    我最近在网上当了一本,但是没时间看,我装了一套英文版的MSDN,哪有中文版的下载呀!
      

  17.   

    想学LINUX系统的原理应该看什么书啊?请高手推荐一下。
      

  18.   

    关于“一个程序中生成一个线程有什么用?”
    那是你还没用到!
    举个例子吧(例子!),
    主程序运行过程中,同时还要播放几首mp3背景音乐,窗口背景还要变换几种3D图形 ,而你的主程序干的是网络交易。
    开个线程就好办了。
      

  19.   

    我是条过前两章  然后没章都看了3便以上的。上面的兄弟跟我说的那本《操作系统原理》我看了一些,简直就是在跟我说汇编嘛,比我那本X86-88还要郁闷,难道非要看这本书才能看我心爱的《WINDOWS核心编程》吗?《WINDOWS程序设计》我都很容易就看懂 天呀~~`
      

  20.   

    根据你所提的问题,你只还是处于入门阶段,你应该看看《windows程序设计》这本书,看懂了之后先写一个至少千行的WIN32 APPLACATION 不用MFC ,之后你可以开始看《windows核心编程》了,我想到那时,你多看几遍你就会明白了,否则你再看《windows核心编程》也无济于事,哈哈