什么是多線程? 在計(jì)算機(jī)編程中,一個(gè)基本的概念就是同時(shí)對(duì)多個(gè)任務(wù)加以控制。許多程序設(shè)計(jì)問題都要求程序能夠停下手頭的工作,改為處理其他一些問題,再返回主進(jìn)程。可以通過多種途徑達(dá)到這個(gè)目的。最開始的時(shí)候,那些掌握機(jī)器低級(jí)語言的程序員編寫一些“中斷服務(wù)例程”,主進(jìn)程的暫停是通過硬件級(jí)的中斷實(shí)現(xiàn)的。盡管這是一種有用的方法,但編出的程序很難移植,由此造成了另一類的代價(jià)高昂問題。中斷對(duì)那些實(shí)時(shí)性很強(qiáng)的任務(wù)來說是很有必要的。但對(duì)于其他許多問題,只要求將問題劃分進(jìn)入獨(dú)立運(yùn)行的程序片斷中,使整個(gè)程序能更迅速地響應(yīng)用戶的請(qǐng)求。
最開始,線程只是用于分配單個(gè)處理器的處理時(shí)間的一種工具。但假如操作系統(tǒng)本身支持多個(gè)處理器,那么每個(gè)線程都可分配給一個(gè)不同的處理器,真正進(jìn)入“并行運(yùn)算”狀態(tài)。從程序設(shè)計(jì)語言的角度看,多線程操作最有價(jià)值的特性之一就是程序員不必關(guān)心到底使用了多少個(gè)處理器。程序在邏輯意義上被分割為數(shù)個(gè)線程;假如機(jī)器本身安裝了多個(gè)處理器,那么程序會(huì)運(yùn)行得更快,毋需作出任何特殊的調(diào)校。根據(jù)前面的論述,大家可能感覺線程處理非常簡單。但必須注意一個(gè)問題:共享資源!如果有多個(gè)線程同時(shí)運(yùn)行,而且它們?cè)噲D訪問相同的資源,就會(huì)遇到一個(gè)問題。舉個(gè)例子來說,兩個(gè)線程不能將信息同時(shí)發(fā)送給一臺(tái)打印機(jī)。為解決這個(gè)問題,對(duì)那些可共享的資源來說(比如打印機(jī)),它們?cè)谑褂闷陂g必須進(jìn)入鎖定狀態(tài)。所以一個(gè)線程可將資源鎖定,在完成了它的任務(wù)后,再解開(釋放)這個(gè)鎖,使其他線程可以接著使用同樣的資源。
多線程是為了同步完成多項(xiàng)任務(wù),不是為了提高運(yùn)行效率,而是為了提高資源使用效率來提高系統(tǒng)的效率。線程是在同一時(shí)間需要完成多項(xiàng)任務(wù)的時(shí)候?qū)崿F(xiàn)的。
定義 英文:Thread
每個(gè)正在系統(tǒng)上運(yùn)行的程序都是一個(gè)進(jìn)程。每個(gè)進(jìn)程包含一到多個(gè)線程。進(jìn)程也可能是整個(gè)程序或者是部分程序的動(dòng)態(tài)執(zhí)行。線程是一組指令的集合,或者是程序的特殊段,它可以在程序里獨(dú)立執(zhí)行。也可以把它理解為代碼運(yùn)行的上下文。所以線程基本上是輕量級(jí)的進(jìn)程,它負(fù)責(zé)在單個(gè)程序里執(zhí)行多任務(wù)。通常由操作系統(tǒng)負(fù)責(zé)多個(gè)線程的調(diào)度和執(zhí)行。
線程是程序中一個(gè)單一的順序控制流程.在單個(gè)程序中同時(shí)運(yùn)行多個(gè)線程完成不同的工作,稱為多線程.
線程和進(jìn)程的區(qū)別在于,子進(jìn)程和父進(jìn)程有不同的代碼和數(shù)據(jù)空間,而多個(gè)線程則共享數(shù)據(jù)空間,每個(gè)線程有自己的執(zhí)行堆棧和程序計(jì)數(shù)器為其執(zhí)行上下文.多線程主要是為了節(jié)約CPU時(shí)間,發(fā)揮利用,根據(jù)具體情況而定.
線程的運(yùn)行中需要使用計(jì)算機(jī)的內(nèi)存資源和CPU。
使用線程的好處 ·使用線程可以把占據(jù)長時(shí)間的程序中的任務(wù)放到后臺(tái)去處理
·用戶界面可以更加吸引人,這樣比如用戶點(diǎn)擊了一個(gè)按鈕去觸發(fā)某些事件的處理,可以彈出一個(gè)進(jìn)度條來顯示處理的進(jìn)度
·程序的運(yùn)行速度可能加快
·在一些等待的任務(wù)實(shí)現(xiàn)上如用戶輸入、文件讀寫和網(wǎng)絡(luò)收發(fā)數(shù)據(jù)等,線程就比較有用了。在這種情況下可以釋放一些珍貴的資源如內(nèi)存占用等等。
還有其他很多使用多線程的好處,這里就不一一說明了。
一些線程模型的背景 可以重點(diǎn)討論一下在Win32環(huán)境中常用的一些模型。
·單線程模型
在這種線程模型中,一個(gè)進(jìn)程中只能有一個(gè)線程,剩下的進(jìn)程必須等待當(dāng)前的線程執(zhí)行完。這種模型的缺點(diǎn)在于系統(tǒng)完成一個(gè)很小的任務(wù)都必須占用很長的時(shí)間。
·塊線程模型(單線程多塊模型STA)
這種模型里,一個(gè)程序里可能會(huì)包含多個(gè)執(zhí)行的線程。在這里,每個(gè)線程被分為進(jìn)程里一個(gè)單獨(dú)的塊。每個(gè)進(jìn)程可以含有多個(gè)塊,可以共享多個(gè)塊中的數(shù)據(jù)。程序規(guī)定了每個(gè)塊中線程的執(zhí)行時(shí)間。所有的請(qǐng)求通過Windows消息隊(duì)列進(jìn)行串行化,這樣保證了每個(gè)時(shí)刻只能訪問一個(gè)塊,因而只有一個(gè)單獨(dú)的進(jìn)程可以在某一個(gè)時(shí)刻得到執(zhí)行。這種模型比單線程模型的好處在于,可以響應(yīng)同一時(shí)刻的多個(gè)用戶請(qǐng)求的任務(wù)而不只是單個(gè)用戶請(qǐng)求。但它的性能還不是很好,因?yàn)樗褂昧舜谢木€程模型,任務(wù)是一個(gè)接一個(gè)得到執(zhí)行的。
·多線程塊模型(自由線程塊模型)
多線程塊模型(MTA)在每個(gè)進(jìn)程里只有一個(gè)塊而不是多個(gè)塊。這單個(gè)塊控制著多個(gè)線程而不是單個(gè)線程。這里不需要消息隊(duì)列,因?yàn)樗械木€程都是相同的塊的一個(gè)部分,并且可以共享。這樣的程序比單線程模型和STA的執(zhí)行速度都要快,因?yàn)榻档土讼到y(tǒng)的負(fù)載,因而可以優(yōu)化來減少系統(tǒng)idle的時(shí)間。這些應(yīng)用程序一般比較復(fù)雜,因?yàn)槌绦騿T必須提供線程同步以保證線程不會(huì)并發(fā)的請(qǐng)求相同的資源,因而導(dǎo)致競(jìng)爭情況的發(fā)生。這里有必要提供一個(gè)鎖機(jī)制。但是這樣也許會(huì)導(dǎo)致系統(tǒng)死鎖的發(fā)生。
進(jìn)程和線程都是操作系統(tǒng)的概念。進(jìn)程是應(yīng)用程序的執(zhí)行實(shí)例,每個(gè)進(jìn)程是由私有的虛擬地址空間、代碼、數(shù)據(jù)和其它各種系統(tǒng)資源組成,進(jìn)程在運(yùn)行過程中創(chuàng)建的資源隨著進(jìn)程的終止而被銷毀,所使用的系統(tǒng)資源在進(jìn)程終止時(shí)被釋放或關(guān)閉。
線程是進(jìn)程內(nèi)部的一個(gè)執(zhí)行單元。系統(tǒng)創(chuàng)建好進(jìn)程后,實(shí)際上就啟動(dòng)執(zhí)行了該進(jìn)程的主執(zhí)行線程,主執(zhí)行線程以函數(shù)地址形式,比如說main或WinMain函數(shù),將程序的啟動(dòng)點(diǎn)提供給Windows系統(tǒng)。主執(zhí)行線程終止了,進(jìn)程也就隨之終止。
每一個(gè)進(jìn)程至少有一個(gè)主執(zhí)行線程,它無需由用戶去主動(dòng)創(chuàng)建,是由系統(tǒng)自動(dòng)創(chuàng)建的。用戶根據(jù)需要在應(yīng)用程序中創(chuàng)建其它線程,多個(gè)線程并發(fā)地運(yùn)行于同一個(gè)進(jìn)程中。一個(gè)進(jìn)程中的所有線程都在該進(jìn)程的虛擬地址空間中,共同使用這些虛擬地址空間、全局變量和系統(tǒng)資源,所以線程間的通訊非常方便,多線程技術(shù)的應(yīng)用也較為廣泛。多線程可以實(shí)現(xiàn)并行處理,避免了某項(xiàng)任務(wù)長時(shí)間占用CPU時(shí)間。要說明的一點(diǎn)是,目前大多數(shù)的計(jì)算機(jī)都是單處理器(CPU)的,為了運(yùn)行所有這些線程,操作系統(tǒng)為每個(gè)獨(dú)立線程安排一些CPU時(shí)間,操作系統(tǒng)以輪換方式向線程提供時(shí)間片,這就給人一種假象,好象這些線程都在同時(shí)運(yùn)行。由此可見,如果兩個(gè)非?;钴S的線程為了搶奪對(duì)CPU的控制權(quán),在線程切換時(shí)會(huì)消耗很多的CPU資源,反而會(huì)降低系統(tǒng)的性能。這一點(diǎn)在多線程編程時(shí)應(yīng)該注意。Win32
SDK函數(shù)支持進(jìn)行多線程的程序設(shè)計(jì),并提供了操作系統(tǒng)原理中的各種同步、互斥和臨界區(qū)等操作。Visual C++
6.0中,使用MFC類庫也實(shí)現(xiàn)了多線程的程序設(shè)計(jì),使得多線程編程更加方便。[1]
編輯本段多線程在.NET里如何工作? 在本質(zhì)上和結(jié)構(gòu)來說,.NET是一個(gè)多線程的環(huán)境。有兩種主要的多線程方法是.NET所提倡的:使用ThreadStart來開始你自己的進(jìn)程,直接的(使用ThreadPool.QueueUserWorkItem)或者間接的(比如Stream.BeginRead,或者調(diào)用BeginInvoke)使用ThreadPool類。一般來說,你可以"手動(dòng)"為長時(shí)間運(yùn)行的任務(wù)創(chuàng)建一個(gè)新的線程,另外對(duì)于短時(shí)間運(yùn)行的任務(wù)尤其是經(jīng)常需要開始的那些,進(jìn)程池是一個(gè)非常好的選擇。進(jìn)程池可以同時(shí)運(yùn)行多個(gè)任務(wù),還可以使用框架類。對(duì)于資源緊缺需要進(jìn)行同步的情況來說,它可以限制某一時(shí)刻只允許一個(gè)線程訪問資源。這種情況可以視為給線程實(shí)現(xiàn)了鎖機(jī)制。線程的基類是System.Threading。所有線程通過CLI來進(jìn)行管理。
·創(chuàng)建線程:
創(chuàng)建一個(gè)新的Thread對(duì)象的實(shí)例。Thread的構(gòu)造函數(shù)接受一個(gè)參數(shù):
Thread DummyThread = new Thread( new
ThreadStart(dummyFunction) );
·執(zhí)行線程:
使用Threading命名空間里的start方法來運(yùn)行線程:
DummyThread.Start ();
·組合線程:
經(jīng)常會(huì)出現(xiàn)需要組合多個(gè)線程的情況,就是當(dāng)某個(gè)線程需要其他線程的結(jié)束來完成自己的任務(wù)。假設(shè)DummyThread必須等待DummyPriorityThread來完成自己的任務(wù),只需要這樣做:
DummyPriorityThread.Join() ;
·暫停線程:
使得線程暫停給定的秒
DummyPriorityThread.Sleep(<Time in Second>);
·中止線程:
如果需要中止線程可以使用如下的代碼:
DummyPriorityThread.Abort();
·同步
經(jīng)常會(huì)遇到需要在線程間進(jìn)行同步的情況,下面的代碼給出了一些方法:
using System;
using System.Threading;
namespace SynchronizationThreadsExample
{
class SynchronizationThreadsExample
{
private int counter = 0;
static void Main( )
{
SynchronizationThreadsExample STE = new
SynchronizationThreadsExample();
STE.ThreadFunction( );
}
public void ThreadFunction ( )
{
Thread DummyThread = new Thread( new
ThreadStart(SomeFunction)) ;
DummyThread.IsBackground=true;
DummyThread.Name = "First Thread";
DummyThread.Start( );
Console.WriteLine("Started thread ",
DummyThread.Name);
Thread DummyPriorityThread = new Thread( new
ThreadStart(SomeFunction) );
DummyPriorityThread.IsBackground=true;
DummyPriorityThread.Name = "Second Thread";
DummyPriorityThread.Start( );
Console.WriteLine("Started thread ",
DummyPriorityThread.Name);
DummyThread.Join( );
DummyPriorityThread.Join( );
}
public void SomeFunction( )
{
try
{
while (counter < 10)
{
int tempCounter = counter;
tempCounter ++;
Thread.Sleep(1);
counter = tempCounter;
Console.WriteLine( "Thread . SomeFunction:
"+Thread.CurrentThread.Name+counter);
}
}
catch (ThreadInterruptedException Ex)
{
Console.WriteLine( "Exception in thread
"+Thread.CurrentThread.Name);
}
finally
{
Console.WriteLine( "Thread Exiting.
"+Thread.CurrentThread.Name);
}
}
}
}
·使用Interlock
C#提供了一個(gè)特殊的類叫做interlocked,就是提供了鎖機(jī)制的實(shí)現(xiàn),可以加入如下的代碼實(shí)現(xiàn)鎖機(jī)制:
Interlocked.SomeFunction (ref counter);
·使用鎖
這是為了鎖定代碼關(guān)鍵區(qū)域以進(jìn)行同步,鎖定代碼如下:
lock (this){ Some statements ;}
·使用Monitor
當(dāng)有需要進(jìn)行線程管理的時(shí)候可以使用:
Monitor.Enter(this);
其他也有一些方法進(jìn)行管理,這里就不一一提及了。
線程的缺點(diǎn)
線程自然也有缺點(diǎn),以下列出了一些:
·如果有大量的線程,會(huì)影響性能,因?yàn)椴僮飨到y(tǒng)需要在他們之間切換;
·更多的線程需要更多的內(nèi)存空間
·線程會(huì)給程序帶來更多的bug,因此要小心使用
·線程的中止需要考慮其對(duì)程序運(yùn)行的影響
·通常塊模型數(shù)據(jù)是在多個(gè)線程間共享的,需要一個(gè)合適的鎖系統(tǒng)替換掉數(shù)據(jù)共享
編輯本段多線程在JAVA里面的應(yīng)用 Java對(duì)多線程的支持是非常強(qiáng)大的,他屏蔽掉了許多的技術(shù)細(xì)節(jié),讓我們可以輕松的開發(fā)多線程的應(yīng)用程序。
Java里面實(shí)現(xiàn)多線程,有2個(gè)方法
1 繼承 Thread類 class MyThread extends Thread {
public void run() {
// 這里寫上線程的內(nèi)容
}
public static void main(String[] args) {
// 使用這個(gè)方法啟動(dòng)一個(gè)線程
new MyThread().start();
}
}
2 實(shí)現(xiàn) Runnable接口 class MyThread implements
Runnable{
public void run() {
// 這里寫上線程的內(nèi)容
}
public static void main(String[] args) {
// 使用這個(gè)方法啟動(dòng)一個(gè)線程
new Thread(new MyThread()).start();
}
}
一般鼓勵(lì)使用第二種方法,因?yàn)镴ava里面只允許單一繼承,但允許實(shí)現(xiàn)多個(gè)接口。第二個(gè)方法更加靈活。
編輯本段實(shí)際意義 一個(gè)采用了多線程技術(shù)的應(yīng)用程序可以更好地利用系統(tǒng)資源。其主要優(yōu)勢(shì)在于充分利用了CPU的空閑時(shí)間片,可以用盡可能少的時(shí)間來對(duì)用戶的要求做出響應(yīng),使得進(jìn)程的整體運(yùn)行效率得到較大提高,同時(shí)增強(qiáng)了應(yīng)用程序的靈活性。更為重要的是,由于同一進(jìn)程的所有線程是共享同一內(nèi)存,所以不需要特殊的數(shù)據(jù)傳送機(jī)制,不需要建立共享存儲(chǔ)區(qū)或共享文件,從而使得不同任務(wù)之間的協(xié)調(diào)操作與運(yùn)行、數(shù)據(jù)的交互、資源的分配等問題更加易于解決。[2]
在多線程應(yīng)用中,考慮不同線程之間的數(shù)據(jù)同步和防止死鎖。當(dāng)兩個(gè)或多個(gè)線程之間同時(shí)等待對(duì)方釋放資源的時(shí)候就會(huì)形成線程之間的死鎖。為了防止死鎖的發(fā)生,需要通過同步來實(shí)現(xiàn)線程安全。在Visual
Basic.NET中提供了三種方法來完成線程的同步。
(1)代碼域同步 使用Monitor類可以同步靜態(tài)/實(shí)例化的方法的全部代碼或者部分代碼段。
(2)手工同步 可以使用不同的同步類(諸如WaitHandle, Mutex,
ReaderWriterLock, ManualResetEvent, AutoResetEvent
和Interlocked等)創(chuàng)建自己的同步機(jī)制。這種同步方式要求你自己手動(dòng)的為不同的域和方法同步,這種同步方式也可以用于進(jìn)程間的同步和解除由于對(duì)共享資源的等待而造成的死鎖。
(3)上下文同步 使用SynchronizationAttribute為ContextBoundObject對(duì)象創(chuàng)建簡單的,自動(dòng)的同步。這種同步方式僅用于實(shí)例化的方法和域的同步。所有在同一個(gè)上下文域的對(duì)象共享同一個(gè)鎖。[3]
雖然多線程能給大家?guī)砗锰?,但是也有不少問題需要解決。例如,對(duì)于像磁盤驅(qū)動(dòng)器這樣獨(dú)占性系統(tǒng)資源,由于線程可以執(zhí)行進(jìn)程的任何代碼段,且線程的運(yùn)行是由系統(tǒng)調(diào)度自動(dòng)完成的,具有一定的不確定性,因此就有可能出現(xiàn)兩個(gè)線程同時(shí)對(duì)磁盤驅(qū)動(dòng)器進(jìn)行操作,從而出現(xiàn)操作錯(cuò)誤;又例如,對(duì)于銀行系統(tǒng)的計(jì)算機(jī)來說,可能使用一個(gè)線程來更新其用戶數(shù)據(jù)庫,而用另外一個(gè)線程來讀取數(shù)據(jù)庫以響應(yīng)儲(chǔ)戶的需要,極有可能讀數(shù)據(jù)庫的線程讀取的是未完全更新的數(shù)據(jù)庫,因?yàn)榭赡茉谧x的時(shí)候只有一部分?jǐn)?shù)據(jù)被更新過。使隸屬于同一進(jìn)程的各線程協(xié)調(diào)一致地工作稱為線程的同步。MFC提供了多種同步對(duì)象,下面我們只介紹最常用的四種:
臨界區(qū)(CCriticalSection)
事件(CEvent)
互斥量(CMutex)
信號(hào)量(CSemaphore)
通過這些類,可以比較容易地做到線程同步。[4]
編輯本段Intel的多線程技術(shù):HT
定義 超線程(HT)是英特爾所研發(fā)的一種技術(shù),于2002年發(fā)布。超線程的英文是HT技術(shù),全名為Hyper-Threading,中文又名超線程。超線程技術(shù)原先只應(yīng)用于Xeon處理器中,當(dāng)時(shí)稱為Super-Threading。之后陸續(xù)應(yīng)用在Pentium 4中,將技術(shù)主流化。早期代號(hào)為Jackson。
特點(diǎn) 通過此技術(shù),英特爾成為第一間公司實(shí)現(xiàn)在一個(gè)實(shí)體處理器中,提供兩個(gè)邏輯線程。之后的Pentium
D縱使不支援超線程技術(shù),但就集成了兩個(gè)實(shí)體核心,所以仍會(huì)見到兩個(gè)邏輯線程。超線程的未來發(fā)展,是提升處理器的邏輯線程,英特爾有計(jì)劃將8核心的處理器,加以配合超線程技術(shù),使之成為16個(gè)邏輯線程的產(chǎn)品。
英特爾表示,超線程技術(shù)讓(P4)處理器增加5%的裸晶面積,就可以換來15%~30%的效能提升。但實(shí)際上,在某些程式或未對(duì)多執(zhí)行緒編譯的程式而言,超線程反而會(huì)降低效能。除此之外,超線程技術(shù)亦要操作系統(tǒng)的配合,普通支援多處理器技術(shù)的系統(tǒng)亦未必能充分發(fā)揮該技術(shù)。例如Windows
2000,英特爾并不鼓勵(lì)使用者在此系統(tǒng)中利用超線程。原先不支援多核心的Windows XP Home Edition卻支援超線程技術(shù)。
編輯本段AMD:下一代處理器考慮多線程技術(shù)
Bulldozer“推土機(jī)” 近日據(jù)相關(guān)消息透露,在HotChips會(huì)議上,AMD宣布下一代代號(hào)為Bulldozer“推土機(jī)”的處理器架構(gòu)將采用單核多線程技術(shù)(multi-threadingtechnology),類似于Intel著名的超線程技術(shù).
AMD沒有透露有關(guān)其多線程能力和更多的細(xì)節(jié),只說推土機(jī)處理器將在2011年推出,支持單核多線程技術(shù).不過,AMD的做法和Intel的
HT是不同的,更類似于Sun的同步多線程技術(shù)(SimultaneousMulti-Threading),由1個(gè)物理核心擴(kuò)展到4個(gè)線程.“推土機(jī)擴(kuò)展出的單核心多線程技術(shù)和Intel的超線程采用的是不同方式.”AMD的代表PatConway也證實(shí)了這一點(diǎn).
有趣的是,早些時(shí)候AMD還表示暫不考慮SMT或其他多線程技術(shù),并將它應(yīng)用在當(dāng)下的處理器中.然而,AMD也認(rèn)同步多線程是未來處理器產(chǎn)品大幅提升性能的必要特征.
推土機(jī)是AMD下一代微架構(gòu)的處理器,事實(shí)上,它將是AMD自2003年后第一次對(duì)處理器架構(gòu)進(jìn)行重大改變.預(yù)計(jì)新一代的處理器將提供遠(yuǎn)高于目前產(chǎn)品的高性能,同時(shí)也加入SSE5指令集.
首款推土機(jī)系列桌面處理器代號(hào)為Orochi,將會(huì)擁有超過4個(gè)以上的處理器核心,8M以上的緩存并支持DDR3內(nèi)存,基于32nm工藝.服務(wù)器版處理器代號(hào)為Valencia和Interlagos,這兩款處理器將會(huì)擁有6、8以及12個(gè)處理器核心.
AMD至今從未采用過同步多線程(SMT)也就是Intel所稱的超線程技術(shù)。雖然這樣的技術(shù)在當(dāng)年的P4時(shí)代顯得并無實(shí)際用途,但到了現(xiàn)在,越發(fā)普及的多線程環(huán)境讓超線程重新煥發(fā)了青春。
發(fā)展前景 以目前的應(yīng)用環(huán)境來看,超線程技術(shù)可以讓一些特定應(yīng)用程序顯著提速達(dá)10到15%。除了Intel的在Nehalem、Atom等中引入的超線程,無論IBM的Power系列,Sun的T1/T2/Rock系列等處理器架構(gòu)都應(yīng)用了類似的SMT同步多線程技術(shù),用少量的晶體管帶來大幅度的多線程性能提升。
一位AMD工程師日前向媒體坦誠,不支持單核多線程技術(shù)讓Opteron處理器看起來性能比不上Intel的低端Xeon。據(jù)稱,AMD內(nèi)部高層已經(jīng)承認(rèn),沒有早早引入此類技術(shù)是一項(xiàng)技術(shù)選擇上的失誤。
不過,AMD副總裁兼服務(wù)器工作站業(yè)務(wù)總經(jīng)理Patrick
Patla接受采訪時(shí),并沒有明確透露單核多線程技術(shù)的未來,而是繼續(xù)重申已經(jīng)公布的Opteron路線圖:“如果你看一下我們路線圖以及我們?cè)诙嗑€程處理器市場(chǎng)的表現(xiàn)就會(huì)知道,我們相信每條線程都擁有完整的核心是目前的最佳選擇。2010年,我們就會(huì)推出12核處理器,2011年16核。我們相信未來幾年內(nèi)我們就能夠完善支持48或64線程環(huán)境,讓我們來看看2012到2013年會(huì)帶來些什么吧?!?
既然2011年才是16核,那么2012到2013直接跳躍到48甚至64核似乎并不是那么正常。另外,Patrick
Patl
|