当前位置:编程学习 > C#/ASP.NET >>

那种语言写multithreading最快及最好?

是c#, vb.net, java? 還是其他呢? LabVIEW? --------------------编程问答-------------------- C++ ?? --------------------编程问答-------------------- 开发时间都要快? --------------------编程问答-------------------- 汇编语言。

“好”是相对的,对于不追求高级复杂应用而追求低级底层应用的人,汇编足够好。 --------------------编程问答-------------------- 多线程,主要是想提高程序的可伸缩性。例如,有很多任务需要并行进行,那么可能需要多线程。
多线程实际上是一个假象,就是说,因为CPU的时间总是有限的,那么CPU需要频繁地切换,在某个时间执行某个线程的任务。这种情况,如果用的不好,反而增加了CPU的负担,降低了系统性能 --------------------编程问答--------------------
引用 4 楼 wuyq11 的回复:
多线程,主要是想提高程序的可伸缩性。例如,有很多任务需要并行进行,那么可能需要多线程。
多线程实际上是一个假象,就是说,因为CPU的时间总是有限的,那么CPU需要频繁地切换,在某个时间执行某个线程的任务。这种情况,如果用的不好,反而增加了CPU的负担,降低了系统性能

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


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

至于方便,我觉得c#和vb.net都比java开发要快。 --------------------编程问答-------------------- 多线程难度在于多花时间在处理同步的问题, 如要缩短这个开发时间有何好方法? --------------------编程问答-------------------- 多线程在多处理器的情况下好。
如果是单核。用多线程肯定会影响性能。因为要线程调度。 --------------------编程问答--------------------
引用 6 楼 microtry 的回复:
引用 4 楼 wuyq11 的回复:
多线程,主要是想提高程序的可伸缩性。例如,有很多任务需要并行进行,那么可能需要多线程。
多线程实际上是一个假象,就是说,因为CPU的时间总是有限的,那么CPU需要频繁地切换,在某个时间执行某个线程的任务。这种情况,如果用的不好,反而增加了CPU的负担,降低了系统性能


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


显然如梦说的你没理解,她的意思是,如果吧大循环拆成多个线程,不但不会快,反而因为线程调度会降低速度。 --------------------编程问答-------------------- 我认为速度快慢视乎多线程是否能做到多工的效果
是否能不用因为等待某一程序的结束而拖慢某一程序的开始 --------------------编程问答--------------------
引用 10 楼 wuyazhe 的回复:

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

请指教,谢谢 --------------------编程问答--------------------
引用 12 楼 microtry 的回复:
引用10 樓wuyazhe 的回复:

您看我是不是沒有理解:
1、如夢的意思是多線程會產生的性能風險(我並沒有反對);
2、我覺得這並不是關鍵的風險(不是沒有風險),這可以通過測試評估摸索出"合理分配CPU
時間和空間負載"的方案來達到提高性能的目的;
3、我認為最關鍵的是風險是“並發”,這個風險涉及的面很廣,而且可能導致嚴重的損失。

請指教,謝謝


我認為當一個程式通過所有測試後, 風險應已經降到最低
最麻煩的事是debug的過程, 解決數據是否同步的問題 --------------------编程问答-------------------- to microtry:
你说的没错,我也不想继续说你对如梦到底是否理解了。呵呵,钻牛角尖了。他之想说多线程并非总能提高效率。当然你说的没错。但这和题目貌似无关,楼主只是开玩笑问问多线程如何实现。以及哪种语言效率高。就这个问题的答案:
显然和语言无关,而效率也不是多线程就一定快(如梦就这个意思)。
并发当然要考虑。只是跑题了而已。呵呵。 --------------------编程问答-------------------- 路过,学习了。。。
--------------------编程问答--------------------
引用 14 楼 wuyazhe 的回复:
to microtry:
你說的沒錯,我也不想繼續說你對如夢到底是否理解了。 呵呵,鑽牛角尖了。 他之想說多線程並非總能提高效率。 當然你說的沒錯。 但這和題目貌似無關,樓主只是開玩笑問問多線程如何實現。 以及哪種語言效率高。 就這個問題的答案:
顯然和語言無關,而效率也不是多線程就一定快(如夢就這個意思)。
並發當然要考慮。 只是跑題了而已。 呵呵。


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


说得很好,谢谢 --------------------编程问答-------------------- 呵呵, 我问的是用哪一种语言能用最少开发时间开发最好的多线程程式哦... ^^ 对这个你有没有意见?
--------------------------------------------------------------------------------
多线程,什么叫多线程,一个进程,入口是main,这个main就是运行的线程,多线程就是同时多个方法在执行。这个和语言哪有关系?

c++:CreateThread
c#:new Thread(()=>MessageBox.Show("yeah")).Start()
vb.net: 
dim th as new Thread(Sub () MessageBox.Show("yeah"))
th.start()

你说写哪个速度快?估计只和打字速度有关。 --------------------编程问答-------------------- 最少开发时间是什么意思,你用最熟练的东西开发什么都比用不熟练的东西开发速度快。
多线程是操作系统的概念,和语言无关。vb6也可以用api:CreateThread,c++也可以用CreateThread
.net的new Thread底层也是调用CreateThread --------------------编程问答--------------------
引用 18 楼 wuyazhe 的回复:
呵呵, 我问的是用哪一种语言能用最少开发时间开发最好的多线程程式哦... ^^ 对这个你有没有意见?
--------------------------------------------------------------------------------
多线程,什么叫多线程,一个进程,入口是main,这个main就是运行的线程,多线程就是同时多个方法在执行。这个和语言哪有关系?

……


你说得对啊,执行上是这样的.

我是以为楼主说的是生产效率,
因为我们只有C#下的架构,没有涉及到java的方面,
所以没有正面回复,
只是讨论一下多线程的并发风险 --------------------编程问答--------------------
引用 19 楼 wuyazhe 的回复:
最少開發時間是什麼意思,你用最熟練的東西開發什麼都比用不熟練的東西開發速度快。
多線程是操作系統的概念,和語言無關。 vb6也可以用api:CreateThread,c++也可以用CreateThread
.net的new Thread底層也是調用CreateThread


之前都说过最花开发时间的是解决同步的问题
生thread的过程, 每种text-based语言都是差不多 --------------------编程问答-------------------- 同步问题真的很简单。
把握一个原则,对公用的,可能导致相互等待的资源进行互斥。互斥的方式也无外呼三种:
临界区,互斥题,信号量
临界区不知道.net如何用。另外2个就是mutex和lock/monitor

并发冲突是现象,解决方法是找一个标志,让需要访问资源的线程逐个的来查看这个标志,因为非寄存器的标志本身就可能并发冲突。所以要用特殊变量。根据访问的范围,有分类出mutex(进程间互斥,当然也可以用于线程互斥),lock是monitor.enter,monitor.exit的简写。这个用于线程互斥。

当并发变得不可避免的时候,为了系统不要死锁,就加入等待超时,如果超时,大不了等待的线程都放弃操作,下次再重新抢资源。 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- C++,因为 C++本身就比其他语言快很多 --------------------编程问答-------------------- 学习了~~~谢谢 --------------------编程问答--------------------
引用 22 楼 wuyazhe 的回复:
同步問題真的很簡單。
把握一個原則,對公用的,可能導致相互等待的資源進行互斥。 互斥的方式也無外呼三種:
臨界區,互斥題,信號量
臨界區不知道.net如何用。 另外2個就是mutex和lock/monitor

並發衝突是現象,解決方法是找一個標誌,讓需要訪問資源的線程逐個的來查看這個標誌,因為非寄存器的標誌本身就可能並發衝突。 所以要用特殊變量。 根據訪問的範圍,有分類出mutex(……


概念的确简单, common sense的东西似的.
但实作用的开发时间的确比单线程为长, 你试试看便知
不同程式语言类型会对开发时间有影响, 你试看数据流方式的程式语言便知道了
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,