多线程,主要是想提高程序的可伸缩性。例如,有很多任务需要并行进行,那么可能需要多线程。
多线程实际上是一个假象,就是说,因为CPU的时间总是有限的,那么CPU需要频繁地切换,在某个时间执行某个线程的任务。这种情况,如果用的不好,反而增加了CPU的负担,降低了系统性能

解决方案 »

  1.   


    我不这样认为,合理的分配CPU的时间和空间负载,恰恰可以大幅提高性能,
    问题是:绝大多数开发者对于并发场景的分析能力非常弱,
    仅仅是个单据流水号的连号要求,就可以让很多开发人员想不明白,
    而处理并发不当轻则造成宕机,重则造成数据丢失或误操作,
    我认为这才是多线程的风险
      

  2.   

    基于现在多核的CPU,多线程编程和并行编程技术,会越来越需要了。至于方便,我觉得c#和vb.net都比java开发要快。
      

  3.   

    您看我是不是没有理解:
    1、如梦的意思是多线程会产生的性能风险(我并没有反对);
    2、我觉得这并不是关键的风险(不是没有风险),这可以通过测试评估摸索出"合理分配CPU
    时间和空间负载"的方案来达到提高性能的目的;
    3、我认为最关键的是风险是“并发”,这个风险涉及的面很广,而且可能导致严重的损失。请指教,谢谢
      

  4.   


    我認為當一個程式通過所有測試後, 風險應已經降到最低
    最麻煩的事是debug的過程, 解決數據是否同步的問題
      

  5.   

    to microtry:
    你说的没错,我也不想继续说你对如梦到底是否理解了。呵呵,钻牛角尖了。他之想说多线程并非总能提高效率。当然你说的没错。但这和题目貌似无关,楼主只是开玩笑问问多线程如何实现。以及哪种语言效率高。就这个问题的答案:
    显然和语言无关,而效率也不是多线程就一定快(如梦就这个意思)。
    并发当然要考虑。只是跑题了而已。呵呵。
      

  6.   

    呵呵, 我问的是用哪一种语言能用最少开发时间开发最好的多线程程式哦... ^^ 对这个你有没有意见?
    --------------------------------------------------------------------------------
    多线程,什么叫多线程,一个进程,入口是main,这个main就是运行的线程,多线程就是同时多个方法在执行。这个和语言哪有关系?c++:CreateThread
    c#:new Thread(()=>MessageBox.Show("yeah")).Start()
    vb.net: 
    dim th as new Thread(Sub () MessageBox.Show("yeah"))
    th.start()你说写哪个速度快?估计只和打字速度有关。
      

  7.   

    最少开发时间是什么意思,你用最熟练的东西开发什么都比用不熟练的东西开发速度快。
    多线程是操作系统的概念,和语言无关。vb6也可以用api:CreateThread,c++也可以用CreateThread
    .net的new Thread底层也是调用CreateThread
      

  8.   


    你说得对啊,执行上是这样的.我是以为楼主说的是生产效率,
    因为我们只有C#下的架构,没有涉及到java的方面,
    所以没有正面回复,
    只是讨论一下多线程的并发风险
      

  9.   


    之前都说过最花开发时间的是解决同步的问题
    生thread的过程, 每种text-based语言都是差不多
      

  10.   

    同步问题真的很简单。
    把握一个原则,对公用的,可能导致相互等待的资源进行互斥。互斥的方式也无外呼三种:
    临界区,互斥题,信号量
    临界区不知道.net如何用。另外2个就是mutex和lock/monitor并发冲突是现象,解决方法是找一个标志,让需要访问资源的线程逐个的来查看这个标志,因为非寄存器的标志本身就可能并发冲突。所以要用特殊变量。根据访问的范围,有分类出mutex(进程间互斥,当然也可以用于线程互斥),lock是monitor.enter,monitor.exit的简写。这个用于线程互斥。当并发变得不可避免的时候,为了系统不要死锁,就加入等待超时,如果超时,大不了等待的线程都放弃操作,下次再重新抢资源。
      

  11.   


    概念的确简单, common sense的东西似的.
    但实作用的开发时间的确比单线程为长, 你试试看便知
    不同程式语言类型会对开发时间有影响, 你试看数据流方式的程式语言便知道了