看了《Windows核心编程》第6--12章,
但是老是硬着头皮看,其实看不怎么明白,然后又看了《Win32多线程程序设计》,当时感觉是明白了,但是好像没消化,还是不会做多线程程序,到底该怎么学多线程编程,大家给点意见吧,你们都是怎么学的?先谢谢啦。

解决方案 »

  1.   

    用自己的行为来解释给你听.其实一个人就相当于一个在运行计算机.假如你起了一个 给一大堆鸡蛋分类 的任务,并且你的左手 和 右手 可以一起工作. 这就相当于2个线程.而当你速度过快 出现两只手同时拿起了某一个鸡蛋 问题就出现了. 但是生活中你却很少碰到这种问题. 原因是你是你意识到了. 所以你大脑会控制等先动的那只手动完, 再使用另外一只手. 这其实就是多线程中的锁的概念.等待前面的人释放大家都在共用的资源. 左手的流程 
    do
    {
      锁定
      左手操作
      解除锁定
    )while(工作未停止);右手的流程 
    do
    {
      锁定
      右手操作
      解除锁定
    )while(工作未停止);上面是正常的流程. 假如你某个时候大脑出问题了. 左手操作完. 忘记解除锁定了. 会产生上面结果? 右手会一直等待左手的操作解除. 而左手也会进入等待操作解除流程. 这样就出现了死锁.自己多思考思考. 计算机所有配件几乎都跟人体各个器官功能类似. 所以那个啥啥啥的也没啥了不起. 他其实只是综合了这个世界物体的规则而已.人死了可能是关机, 也有可能是重启(诈尸) 哈哈
      

  2.   

    当遇到实际问题需要用到多线程的时候你自然就能更深刻的理解了
    举个例子
    做一个基于winsocket的点对点聊天程序
    采用阻塞模式accept客户端连接
    如果不用多线程accept的时候程序就会挂起
    采用多线程操作就会十分流畅
    有兴趣的话可以试试
    也没几行代码
      

  3.   

    这个建议不错,顺便又可以学习socket编程,谢谢。
      

  4.   

    没想法就别去看《windows核心编程》,这玩意太枯燥-我感觉,当你激起兴趣时在去看,抓重点。
    关于多线程 你得去经常没事玩线程,去玩起线程的函数,慢慢体会,调试  跟踪什么的 你必然会发现奇怪的东西,比如同个东西 两次结果不同哈哈  自己去挖吧,别人给你说的  你看书的 是没很大帮助,得自己去敲代码