最近要对之前一个C/S结构的项目中编写的代码进行些优化,由于是服务端的程序主要就是找到其中容易引起多线程并发点,标注并尽量修改出来,由于本人对多线程这块接触的比较少,虽然最近几天一直在狂补但还是感觉收效甚微,所以在此请各位多线程方面的高手指点一二,谢谢!
      1.如何查找容易引起多线程并发的点,之前想到了一些:主要就是查找全局的静态变量(此处使用全局静态字典进行存储查询的工作)使用之处,看能否用单例模式进行改进。
        不过还是觉得比较片面考虑很不完全,希望大家再给予指点。
      2.如何能学好多线程方面的知识,最好能推荐一些书籍、网站或者视频教程均可。
      唯有及时送分感谢!

解决方案 »

  1.   

    入门级的可以读《C#多线程参考手册》。到msdn上找一下lock,mutex,moniter,autoresetEvent,看明白他们的用法就可以了。
    代码中凡是用到类里面的变量或属性存储值的,比如List<>,Arraylist,Dictionary的都可能在多线程下有并发问题,要检查。
      

  2.   

    简单的用lock就可以解决了,甚至有些情况下可能会使用多线程,但未必需要同步。
      

  3.   

    c#的多线程编程已经是比较容易了,不像delphi设计多线程,一不小心动不动就内存溢出程序崩溃
      

  4.   

    这位兄弟,delphi需要使用onTerminate来作结束处理,C#使用委托来处理界面,而且delphi的内存溢出程序崩溃和线程没有必然的联系,本身就需要注意内存资源的释放。
      

  5.   

    推荐
    http://knowledge.swanky.wu.googlepages.com/threading_in_c_sharp_part_1.html