|
|
yīng wén: Thread
měi gè zhèng zài xì tǒng shàng yùn xíng de chéng xù dōushì yī gè jìn chéng。 měi gè jìn chéng bāo hán yī dào duō gè xiàn chéng。 jìn chéng yě kě néng shì zhěng gè chéng xù huò zhě shì bù fēn chéng xù de dòng tài zhí xíng。 xiàn chéng shì yī zǔ zhǐ lìng de jí hé, huò zhě shì chéng xù de tè shū duàn, tā kě yǐ zài chéng xù lǐ dú lì zhí xíng。 yě kě yǐ bǎ tā lǐ jiě wéi dài mǎ yùn xíng de shàng xià wén。 suǒ yǐ xiàn chéng jī běn shàng shì qīng liàng jí de jìn chéng, tā fù zé zài dān gè chéng xù lǐ zhí xíng duō rèn wù。 tōng cháng yóu cāo zuò xì tǒng fù zé duō gè xiàn chéng de diào dù hé zhí xíng。
xiàn chéng shì chéng xù zhōng yī gè dān yī de shùn xù kòng zhì liú chéng . zài dān gè chéng xù zhōng tóng shí yùn xíng duō gè xiàn chéng wán chéng bù tóng de gōng zuò , chēng wéi duō xiàn chéng .
xiàn chéng hé jìn chéng de qū bié zài yú , zǐ jìn chéng hé fù jìn chéng yòu bù tóng de dài mǎ hé shù jù kōng jiān , ér duō gè xiàn chéng zé gòng xiǎng shù jù kōng jiān , měi gè xiàn chéng yòu zì jǐ de zhí xíng duī zhàn hé chéng xù jì shù qì wéi qí zhí xíng shàng xià wén . duō xiàn chéng zhù yào shì wèile jié yuē CPU shí jiān , fā huī lì yòng , gēn jù jù tǐ qíng kuàng 'ér dìng . xiàn chéng de yùn xíng zhōng xū yào shǐ yòng jì suàn jī de nèi cún zī yuán hé CPU。 |
shénme shì duō xiàn chéng? |
duō xiàn chéng shì wéi liǎo tóng bù wán chéng duō xiàng rèn wù, bù shì wèile tí gāo yùn xíng xiàolǜ, ér shì wèile tí gāo zī yuán shǐ yòng xiàolǜ lái tí gāo xì tǒng de xiàolǜ。 xiàn chéng shì zài tóng yī shí jiān xū yào wán chéng duō xiàng rèn wù de shí hòu shí xiàn de。
shǐ yòng xiàn chéng de hǎo chù yòu yǐ xià jǐ diǎn:
· shǐ yòng xiàn chéng kě yǐ bǎ zhàn jù cháng shí jiān de chéng xù zhōng de rèn wù fàng dào hòu tái qù chù lǐ
· yòng hù jiè miàn kě yǐ gèng jiā xī yǐn rén, zhè yàng bǐ rú yòng hù diǎn jī liǎo yī gè 'àn niǔ qù chù fā mǒu xiē shì jiàn de chǔlǐ, kě yǐ dàn chū yī gè jìn dù tiáo lái xiǎn shì chǔlǐ de jìn dù
· chéng xù de yùn xíng sù dù kě néng jiā kuài
· zài yī xiē děng dài de rèn wù shí xiàn shàng rú yòng hù shū rù、 wén jiàn dú xiě hé wǎng luò shōu fā shù jù děng, xiàn chéng jiù bǐ jiào yòu yòng liǎo。 zài zhè zhǒng qíng kuàng xià kě yǐ shì fàng yī xiē zhēn guì de zī yuán rú nèi cún zhàn yòng děng děng。
hái yòu qí tā hěn duō shǐ yòng duō xiàn chéng de hǎo chù, zhè lǐ jiù bù yī yī shuō míng liǎo。
yī xiē xiàn chéng mó xíng de bèi jǐng
kě yǐ zhòng diǎn tǎo lùn yī xià zài Win32 huán jìng zhōng cháng yòng de yī xiē mó xíng。
· dān xiàn chéng mó xíng
zài zhè zhǒng xiàn chéng mó xíng zhōng, yī gè jìn chéng zhōng zhǐ néng yòu yī gè xiàn chéng, shèng xià de jìn chéng bì xū děng dài dāng qián de xiàn chéng zhí xíng wán。 zhè zhǒng mó xíng de quē diǎn zài yú xì tǒng wán chéng yī gè hěn xiǎo de rèn wù dū bì xū zhàn yòng hěn cháng de shí jiān。
· kuài xiàn chéng mó xíng( dān xiàn chéng duō kuài mó xíng STA)
zhè zhǒng mó xíng lǐ, yī gè chéng xù lǐ kě néng huì bāo hán duō gè zhí xíng de xiàn chéng。 zài zhè lǐ, měi gè xiàn chéng bèi fēn wéi jìn chéng lǐ yī gè dān dú de kuài。 měi gè jìn chéng kě yǐ hán yòu duō gè kuài, kě yǐ gòng xiǎng duō gè kuài zhōng de shù jù。 chéng xù guī dìng liǎo měi gè kuài zhōng xiàn chéng de zhí xíng shí jiān。 suǒ yòu de qǐng qiú tōng guò Windows xiāo xī duì liè jìn xíng chuàn xíng huà, zhè yàng bǎo zhèng liǎo měi gè shí kè zhǐ néng fǎng wèn yī gè kuài, yīn 'ér zhǐ yòu yī gè dān dú de jìn chéng kě yǐ zài mǒu yī gè shí kè dé dào zhí xíng。 zhè zhǒng mó xíng bǐ dān xiàn chéng mó xíng de hǎo chù zài yú, kě yǐ xiǎng yìng tóng yī shí kè de duō gè yòng hù qǐng qiú de rèn wù 'ér bù zhǐ shì dān gè yòng hù qǐng qiú。 dàn tā de xìng néng hái bù shì hěn hǎo, yīn wéi tā shǐ yòng liǎo chuàn xíng huà de xiàn chéng mó xíng, rèn wù shì yī gè jiē yī gè dé dào zhí xíng de。
· duō xiàn chéng kuài mó xíng( zì yóu xiàn chéng kuài mó xíng)
duō xiàn chéng kuài mó xíng( MTA) zài měi gè jìn chéng lǐ zhǐ yòu yī gè kuài 'ér bù shì duō gè kuài。 zhè dān gè kuài kòng zhì zhe duō gè xiàn chéng 'ér bù shì dān gè xiàn chéng。 zhè lǐ bù xū yào xiāo xī duì liè, yīn wéi suǒ yòu de xiàn chéng dōushì xiāng tóng de kuài de yī gè bù fēn, bìng qiě kě yǐ gòng xiǎng。 zhè yàng de chéng xù bǐ dān xiàn chéng mó xíng hé STA de zhí xíng sù dù dōuyào kuài, yīn wéi jiàng dī liǎo xì tǒng de fù zài, yīn 'ér kě yǐ yōu huà lái jiǎn shǎo xì tǒng idle de shí jiān。 zhè xiē yìng yòng chéng xù yī bān bǐ jiào fù zá, yīn wéi chéng xù yuán bì xū tí gōng xiàn chéng tóng bù yǐ bǎo zhèng xiàn chéng bù huì bìng fā de qǐng qiú xiāng tóng de zī yuán, yīn 'ér dǎo zhì jìng zhēng qíng kuàng de fā shēng。 zhè lǐ yòu bì yào tí gōng yī gè suǒ jī zhì。 dàn shì zhè yàng yě xǔ huì dǎo zhì xì tǒng sǐ suǒ de fā shēng。
jìn chéng hé xiàn chéng dōushì cāo zuò xì tǒng de gài niàn。 jìn chéng shì yìng yòng chéng xù de zhí xíng shí lì, měi gè jìn chéng shì yóu sī yòu de xū nǐ dì zhǐ kōng jiān、 dài mǎ、 shù jù hé qí tā gè zhǒng xì tǒng zī yuán zǔ chéng, jìn chéng zài yùn xíng guò chéng zhōng chuàng jiàn de zī yuán suí zhe jìn chéng de zhōng zhǐ 'ér bèi xiāo huǐ, suǒ shǐ yòng de xì tǒng zī yuán zài jìn chéng zhōng zhǐ shí bèi shì fàng huò guān bì。
xiàn chéng shì jìn chéng nèi bù de yī gè zhí xíng dān yuán。 xì tǒng chuàng jiàn hǎo jìn chéng hòu, shí jì shàng jiù qǐ dòng zhí xíng liǎo gāi jìn chéng de zhù zhí xíng xiàn chéng, zhù zhí xíng xiàn chéng yǐ hán shù dì zhǐ xíng shì, bǐ rú shuō main huò WinMain hán shù, jiāng chéng xù de qǐ dòng diǎn tí gōngjǐ Windows xì tǒng。 zhù zhí xíng xiàn chéng zhōng zhǐ liǎo, jìn chéng yě jiù suí zhī zhōng zhǐ。
měi yī gè jìn chéng zhì shǎo yòu yī gè zhù zhí xíng xiàn chéng, tā wú xū yóu yòng hù qù zhù dòng chuàng jiàn, shì yóu xì tǒng zì dòng chuàng jiàn de。 yòng hù gēn jù xū yào zài yìng yòng chéng xù zhōng chuàng jiàn qí tā xiàn chéng, duō gè xiàn chéng bìng fā dì yùn xíng yú tóng yī gè jìn chéng zhōng。 yī gè jìn chéng zhōng de suǒ yòu xiàn chéng dōuzài gāi jìn chéng de xū nǐ dì zhǐ kōng jiān zhōng, gòng tóng shǐ yòng zhè xiē xū nǐ dì zhǐ kōng jiān、 quán jú biàn liàng hé xì tǒng zī yuán, suǒ yǐ xiàn chéng jiān de tōng xùn fēi cháng fāng biàn, duō xiàn chéng jì shù de yìng yòng yě jiào wéi guǎng fàn。 duō xiàn chéng kě yǐ shí xiàn bìng xíng chǔlǐ, bì miǎn liǎo mǒu xiàng rèn wù cháng shí jiān zhàn yòng CPU shí jiān。 yào shuō míng de yī diǎn shì, mù qián dà duō shù de jì suàn jī dōushì dān chù lǐ qì( CPU) de, wèile yùn xíng suǒ yòu zhè xiē xiàn chéng, cāo zuò xì tǒng wéi měi gè dú lì xiàn chéng 'ān pái yī xiē CPU shí jiān, cāo zuò xì tǒng yǐ lún huàn fāng shì xiàng xiàn chéng tí gōng shí jiān piàn, zhè jiù gěi rén yī zhǒng jiǎ xiàng, hǎo xiàng zhè xiē xiàn chéng dōuzài tóng shí yùn xíng。 yóu cǐ kě jiàn, rú guǒ liǎng gè fēi cháng huó yuè de xiàn chéng wèile qiǎng duó duì CPU de kòng zhì quán, zài xiàn chéng qiē huàn shí huì xiāo hào hěn duō de CPU zī yuán, fǎn 'ér huì jiàng dī xì tǒng de xìng néng。 zhè yī diǎn zài duō xiàn chéng biān chéng shí yīnggāi zhù yì。 Win32SDK hán shù zhī chí jìn xíng duō xiàn chéng de chéng xù shè jì, bìng tí gōng liǎo cāo zuò xì tǒng yuán lǐ zhōng de gè zhǒng tóng bù、 hù chì hé lín jiè qū děng cāo zuò。 VisualC++6.0 zhōng, shǐ yòng MFC lèi kù yě shí xiàn liǎo duō xiàn chéng de chéng xù shè jì, shǐ dé duō xiàn chéng biān chéng gèng jiā fāng biàn。 |
duō xiàn chéng zài .NET lǐ rú hé gōng zuò ? |
zài běn zhì shàng hé jié gòu lái shuō, .NET shì yī gè duō xiàn chéng de huán jìng。 yòu liǎng zhǒng zhù yào de duō xiàn chéng fāng fǎ shì .NET suǒ tí chàng de: shǐ yòng ThreadStart lái kāi shǐ nǐ zì jǐ de jìn chéng, zhí jiē de( shǐ yòng ThreadPool.QueueUserWorkItem) huò zhě jiànjiē de( bǐ rú Stream.BeginRead, huò zhě diào yòng BeginInvoke) shǐ yòng ThreadPool lèi。 yī bān lái shuō, nǐ kě yǐ " shǒu dòng " wéi cháng shí jiān yùn xíng de rèn wù chuàng jiàn yī gè xīn de xiàn chéng, lìng wài duì yú duǎn shí jiān yùn xíng de rèn wù yóu qí shì jīng cháng xū yào kāi shǐ de nà xiē, jìn chéng chí shì yī gè fēi cháng hǎo de xuǎn zé。 jìn chéng chí kě yǐ tóng shí yùn xíng duō gè rèn wù, hái kě yǐ shǐ yòng kuàng jià lèi。 duì yú zī yuán jǐn quē xū yào jìn xíng tóng bù de qíng kuàng lái shuō, tā kě yǐ xiàn zhì mǒu yī shí kè zhǐ yǔn xǔ yī gè xiàn chéng fǎng wèn zī yuán。 zhè zhǒng qíng kuàng kě yǐ shì wéi gěi xiàn chéng shí xiàn liǎo suǒ jī zhì。 xiàn chéng de jī lèi shì System.Threading。 suǒ yòu xiàn chéng tōng guò CLI lái jìn xíng guǎn lǐ。
· chuàng jiàn xiàn chéng:
chuàng jiàn yī gè xīn de Thread duì xiàng de shí lì。 Thread de gòu zào hán shù jiē shòu yī gè cān shù:
ThreadDummyThread=newThread(newThreadStart(dummyFunction));
· zhí xíng xiàn chéng:
shǐ yòng Threading mìng míng kōng jiān lǐ de start fāng fǎ lái yùn xíng xiàn chéng:
DummyThread.Start();
· zǔ hé xiàn chéng:
jīng cháng huì chū xiàn xū yào zǔ hé duō gè xiàn chéng de qíng kuàng, jiù shì dāng mǒu gè xiàn chéng xū yào qí tā xiàn chéng de jié shù lái wán chéng zì jǐ de rèn wù。 jiǎ shè DummyThread bì xū děng dài DummyPriorityThread lái wán chéng zì jǐ de rèn wù, zhǐ xū yào zhè yàng zuò:
DummyPriorityThread.Join();
· zàn tíng xiàn chéng:
shǐ dé xiàn chéng zàn tíng gěi dìng de miǎo
DummyPriorityThread.Sleep(<TimeinSecond>);
· zhōng zhǐ xiàn chéng:
rú guǒ xū yào zhōng zhǐ xiàn chéng kě yǐ shǐ yòng rú xià de dài mǎ:
DummyPriorityThread.Abort();
· tóng bù
jīng cháng huì yù dào xū yào zài xiàn chéng jiànjìn xíng tóng bù de qíng kuàng, xià miàn de dài mǎ gěi chū liǎo yī xiē fāng fǎ:
usingSystem;
usingSystem.Threading;
namespaceSynchronizationThreadsExample
{
classSynchronizationThreadsExample
{
privateintcounter=0;
staticvoidMain()
{
SynchronizationThreadsExampleSTE=newSynchronizationThreadsExample();
STE.ThreadFunction();
}
publicvoidThreadFunction()
{
ThreadDummyThread=newThread(newThreadStart(SomeFunction));
DummyThread.IsBackground=true;
DummyThread.Name="FirstThread";
DummyThread.Start();
Console.WriteLine("Startedthread",DummyThread.Name);
ThreadDummyPriorityThread=newThread(newThreadStart(SomeFunction));
DummyPriorityThread.IsBackground=true;
DummyPriorityThread.Name="SecondThread";
DummyPriorityThread.Start();
Console.WriteLine("Startedthread",DummyPriorityThread.Name);
DummyThread.Join();
DummyPriorityThread.Join();
}
publicvoidSomeFunction()
{
try
{
while(counter<10)
{
inttempCounter=counter;
tempCounter++;
Thread.Sleep(1);
counter=tempCounter;
Console.WriteLine("Thread.SomeFunction:"+Thread.CurrentThread.Name+counter);
}
}
catch(ThreadInterruptedExceptionEx)
{
Console.WriteLine("Exceptioninthread"+Thread.CurrentThread.Name);
}
finally
{
Console.WriteLine("ThreadExiting."+Thread.CurrentThread.Name);
}
}
}
}
· shǐ yòng Interlock
C# tí gōng liǎo yī gè tè shū de lèi jiào zuò interlocked, jiù shì tí gōng liǎo suǒ jī zhì de shí xiàn, kě yǐ jiā rù rú xià de dài mǎ shí xiàn suǒ jī zhì:
Interlocked.SomeFunction(refcounter);
· shǐ yòng suǒ
zhè shì wèile suǒ dìng dài mǎ guān jiàn qū yù yǐ jìn xíng tóng bù, suǒ dìng dài mǎ rú xià:
lock(this){Somestatements;}
· shǐ yòng Monitor
dāng yòu xū yào jìn xíng xiàn chéng guǎn lǐ de shí hòu kě yǐ shǐ yòng:
Monitor.Enter(this);
qí tā yě yòu yī xiē fāng fǎ jìn xíng guǎn lǐ, zhè lǐ jiù bù yī yī tí jí liǎo。
xiàn chéng de quē diǎn
xiàn chéng zì rán yě yòu quē diǎn, yǐ xià liè chū liǎo yī xiē:
· rú guǒ yòu dà liàng de xiàn chéng, huì yǐng xiǎng xìng néng, yīn wéi cāo zuò xì tǒng xū yào zài tā men zhī jiān qiē huàn;
· gèng duō de xiàn chéng xū yào gèng duō de nèi cún kōng jiān
· xiàn chéng huì gěi chéng xù dài lái gèng duō de bug, yīn cǐ yào xiǎo xīn shǐ yòng
· xiàn chéng de zhōng zhǐ xū yào kǎo lǜ qí duì chéng xù yùn xíng de yǐng xiǎng
· tōng cháng kuài mó xíng shù jù shì zài duō gè xiàn chéng jiān gòng xiǎng de, xū yào yī gè hé shì de suǒ xì tǒng tì huàn diào shù jù gòng xiǎng
cān kǎo liàn jiē :
http://hi.baidu.com/ce%5Fken/blog/item/c7e7ebc40fe265ca39db49a7.html
http://hi.baidu.com/ce%5Fken/blog/item/70c5670f62592a2b6159f348.html |
duō xiàn chéng zài JAVA lǐ miàn de yìng yòng |
Java duì duō xiàn chéng de zhī chí shì fēi cháng qiáng dà de, tā píng bì diào liǎo xǔ duō de jì shù xì jié, ràng wǒ men kě yǐ qīng sōng de kāi fā duō xiàn chéng de yìng yòng chéng xù。
Java lǐ miàn shí xiàn duō xiàn chéng , yòu 2 gè fāng fǎ
1 jì chéng Thread lèi, bǐ rú
classMyThreadextendsThread{
publicvoidrun(){
// zhè lǐ xiě shàng xiàn chéng de nèi róng
}
publicstaticvoidmain(String[]args){
// shǐ yòng zhè gè fāng fǎ qǐ dòng yī gè xiàn chéng
newMyThread().start();
}
}
2 shí xiàn Runnable jiē kǒu
classMyThreadimplementsRunnable{
publicvoidrun(){
// zhè lǐ xiě shàng xiàn chéng de nèi róng
}
publicstaticvoidmain(String[]args){
// shǐ yòng zhè gè fāng fǎ qǐ dòng yī gè xiàn chéng
newThread(newMyThread()).start();
}
}
yī bān gǔ lì shǐ yòng dì 'èr zhǒng fāng fǎ, yīn wéi Java lǐ miàn zhǐ yǔn xǔ dān yī jì chéng, dàn yǔn xǔ shí xiàn duō gè jiē kǒu。 dì 'èr gè fāng fǎ gèng jiā líng huó。 |
|
yī gè cǎi yòng liǎo duō xiàn chéng jì shù de yìng yòng chéng xù kě yǐ gèng hǎo dì lì yòng xì tǒng zī yuán。 qí zhù yào yōu shì zài yú chōng fēn lì yòng liǎo CPU de kòngxián shí jiān piàn, kě yǐ yòng jìn kě néng shǎo de shí jiān lái duì yòng hù de yào qiú zuò chū xiǎng yìng, shǐ dé jìn chéng de zhěng tǐ yùn xíng xiàolǜ dé dào jiào dà tí gāo, tóng shí zēng qiáng liǎo yìng yòng chéng xù de líng huó xìng。 gèng wéi zhòng yào de shì, yóu yú tóng yī jìn chéng de suǒ yòu xiàn chéng shì gòng xiǎng tóng yī nèi cún, suǒ yǐ bù xū yào tè shū de shù jù chuán sòng jī zhì, bù xū yào jiàn lì gòng xiǎng cún chǔ qū huò gòng xiǎng wén jiàn, cóng 'ér shǐ dé bù tóng rèn wù zhī jiān de xié diào cāo zuò yǔ yùn xíng、 shù jù de jiāo hù、 zī yuán de fēn pèi děng wèn tí gèng jiā yì yú jiě jué。 |
|
zài duō xiàn chéng yìng yòng zhōng, kǎo lǜ bù tóng xiàn chéng zhī jiān de shù jù tóng bù hé fáng zhǐ sǐ suǒ。 dāng liǎng gè huò duō gè xiàn chéng zhī jiān tóng shí děng dài duì fāng shì fàng zī yuán de shí hòu jiù huì xíng chéng xiàn chéng zhī jiān de sǐ suǒ。 wèile fáng zhǐ sǐ suǒ de fā shēng, xū yào tōng guò tóng bù lái shí xiàn xiàn chéng 'ān quán。 zài VisualBasic.NET zhōng tí gōng liǎo sān zhǒng fāng fǎ lái wán chéng xiàn chéng de tóng bù。
( 1) dài mǎ yù tóng bù: shǐ yòng Monitor lèi kě yǐ tóng bù jìng tài / shí lì huà de fāng fǎ de quán bù dài mǎ huò zhě bù fēn dài mǎ duàn。
( 2) shǒu gōng tóng bù: kě yǐ shǐ yòng bù tóng de tóng bù lèi( zhū rú WaitHandle,Mutex,ReaderWriterLock,ManualResetEvent,AutoResetEvent hé Interlocked děng) chuàng jiàn zì jǐ de tóng bù jī zhì。 zhè zhǒng tóng bù fāng shì yào qiú nǐ zì jǐ shǒu dòng de wéi bù tóng de yù hé fāng fǎ tóng bù, zhè zhǒng tóng bù fāng shì yě kě yǐ yòng yú jìn chéng jiān de tóng bù hé jiě chú yóu yú duì gòng xiǎng zī yuán de děng dài 'ér zào chéng de sǐ suǒ。
( 3) shàng xià wén tóng bù: shǐ yòng SynchronizationAttribute wéi ContextBoundObject duì xiàng chuàng jiàn jiǎn dān de, zì dòng de tóng bù。 zhè zhǒng tóng bù fāng shì jǐn yòng yú shí lì huà de fāng fǎ hé yù de tóng bù。 suǒ yòu zài tóng yī gè shàng xià wén yù de duì xiàng gòng xiǎng tóng yī gè suǒ。
suī rán duō xiàn chéng néng gěi dà jiā dài lái hǎo chù, dàn shì yě yòu bù shǎo wèn tí xū yào jiě jué。 lì rú, duì yú xiàng cí pán qū dòng qì zhè yàng dú zhàn xìng xì tǒng zī yuán, yóu yú xiàn chéng kě yǐ zhí xíng jìn chéng de rèn hé dài mǎ duàn, qiě xiàn chéng de yùn xíng shì yóu xì tǒng diào dù zì dòng wán chéng de, jù yòu yī dìng de bù què dìng xìng, yīn cǐ jiù yòu kě néng chū xiàn liǎng gè xiàn chéng tóng shí duì cí pán qū dòng qì jìn xíng cāo zuò, cóng 'ér chū xiàn cāo zuò cuò wù; yòu lì rú, duì yú yínháng xì tǒng de jì suàn jī lái shuō, kě néng shǐ yòng yī gè xiàn chéng lái gēngxīn qí yòng hù shù jù kù, ér yòng lìng wài yī gè xiàn chéng lái dú qǔ shù jù kù yǐ xiǎng yìng chǔ hù de xū yào, jí yòu kě néng dú shù jù kù de xiàn chéng dú qǔ de shì wèi wán quán gēngxīn de shù jù kù, yīn wéi kě néng zài dú de shí hòu zhǐ yòu yī bù fēn shù jù bèi gēngxīn guò。 shǐ lì shǔ yú tóng yī jìn chéng de gè xiàn chéng xié diào yī zhì dì gōng zuò chēng wéi xiàn chéng de tóng bù。 MFC tí gōng liǎo duō zhǒng tóng bù duì xiàng, xià miàn wǒ men zhǐ jiè shào zuì cháng yòng de sì zhǒng: lín jiè qū( CCriticalSection)
shì jiàn( CEvent)
hù chì liàng( CMutex)
xìn hào liàng( CSemaphore)
tōng guò zhè xiē lèi, kě yǐ bǐ jiào róng yì dì zuò dào xiàn chéng tóng bù。 |
Intel de duō xiàn chéng jì shù: HT |
chāo xiàn chéng( HT) shì yīng tè 'ěr suǒ yán fā de yī zhǒng jì shù, yú 2002 nián fā bù。 chāo xiàn chéng de yīng wén shì HT jì shù, quán míng wéi Hyper-Threading, zhōng wén yòu míng chāo xiàn chéng。 chāo xiàn chéng jì shù yuán xiān zhǐ yìng yòng yú Xeon chǔlǐ qì zhōng, dāng shí chēng wéi Super-Threading。 zhī hòu lù xù yìng yòng zài Pentium4 zhōng, jiāng jì shù zhù liú huà。 zǎo qī dài hào wéi Jackson。
tōng guò cǐ jì shù, yīng tè 'ěr chéng wéi dì yī jiān gōng sī shí xiàn zài yī gè shí tǐ chǔlǐ qì zhōng, tí gōng liǎng gè luó ji xiàn chéng。 zhī hòu de PentiumD zòng shǐ bù zhī yuán chāo xiàn chéng jì shù, dàn jiù jí chéng liǎo liǎng gè shí tǐ hé xīn, suǒ yǐ réng huì jiàn dào liǎng gè luó ji xiàn chéng。 chāo xiàn chéng de wèi lái fā zhǎn, shì tí shēng chǔlǐ qì de luó ji xiàn chéng, yīng tè 'ěr yòu jìhuà jiāng 8 hé xīn de chǔlǐ qì, jiā yǐ pèi hé chāo xiàn chéng jì shù, shǐ zhī chéng wéi 16 gè luó ji xiàn chéng de chǎn pǐn。
yīng tè 'ěr biǎo shì, chāo xiàn chéng jì shù ràng( P4) chǔlǐ qì zēng jiā 5% de luǒ jīng miàn jī, jiù kě yǐ huàn lái 15%~30% de xiào néng tí shēng。 dàn shí jì shàng, zài mǒu xiē chéng shì huò wèi duì duō zhí xíng xù biān yì de chéng shì 'ér yán, chāo xiàn chéng fǎn 'ér huì jiàng dī xiào néng。 chú cǐ zhī wài, chāo xiàn chéng jì shù yì yào cāo zuò xì tǒng de pèi hé, pǔ tōng zhī yuán duō chǔlǐ qì jì shù de xì tǒng yì wèi bì néng chōng fēn fā huī gāi jì shù。 lì rú Windows2000, yīng tè 'ěr bìng bù gǔ lì shǐ yòng zhě zài cǐ xì tǒng zhōng lì yòng chāo xiàn chéng。 yuán xiān bù zhī yuán duō hé xīn de WindowsXPHomeEdition què zhī yuán chāo xiàn chéng jì shù。 |
AMD: xià yī dài chǔlǐ qì kǎo lǜ duō xiàn chéng jì shù |
jìn rì jù xiāng guān xiāo xī tòu lù , zài HotChips huì yì shàng ,AMD xuān bù xià yī dài dài hào wéi Bulldozer “ tuī tǔ jī ” de chǔlǐ qì jià gòu jiāng cǎi yòng dān hé duō xiàn chéng jì shù (multi-threadingtechnology), lèi sì yú Intel zhù míng de chāo xiàn chéng jì shù .
AMD méi yòu tòu lù yòu guān qí duō xiàn chéng néng lì hé gèng duō de xì jié , zhǐ shuō tuī tǔ jī chǔlǐ qì jiāng zài 2011 nián tuī chū , zhī chí dān hé duō xiàn chéng jì shù . bù guò ,AMD de zuò fǎ hé Intel de HT shì bù tóng de , gèng lèi sì yú Sun de tóng bù duō xiàn chéng jì shù (SimultaneousMulti-Threading), yóu 1 gè wù lǐ hé xīn kuò zhǎn dào 4 gè xiàn chéng .“ tuī tǔ jī kuò zhǎn chū de dān hé xīn duō xiàn chéng jì shù hé Intel de chāo xiàn chéng cǎi yòng de shì bù tóng fāng shì .” AMD de dài biǎo PatConway yě zhèng shí liǎo zhè yī diǎn . yòu qù de shì , zǎo xiē shí hòu AMD hái biǎo shì zàn bù kǎo lǜ SMT huò qí tā duō xiàn chéng jì shù , bìng jiāng tā yìng yòng zài dāng xià de chǔlǐ qì zhōng . rán 'ér ,AMD yě rèn tóng bù duō xiàn chéng shì wèi lái chǔlǐ qì chǎn pǐn dà fú tí shēng xìng néng de bì yào tè zhēng .
tuī tǔ jī shì AMD xià yī dài wēi jià gòu de chǔlǐ qì , shì shí shàng , tā jiāng shì AMD zì 2003 nián hòu dì yī cì duì chǔlǐ qì jià gòu jìn xíng zhòng dà gǎi biàn . yù jì xīn yī dài de chǔlǐ qì jiāng tí gōng yuǎn gāo yú mù qián chǎn pǐn de gāo xìng néng , tóng shí yě jiā rù SSE5 zhǐ lìng jí .
shǒu kuǎn tuī tǔ jī xì liè zhuō miàn chǔlǐ qì dài hào wéi Orochi, jiāng huì yōng yòu chāo guò 4 gè yǐ shàng de chǔlǐ qì hé xīn ,8M yǐ shàng de huǎn cún bìng zhī chí DDR3 nèi cún , jī yú 32nm gōng yì . fú wù qì bǎn chǔlǐ qì dài hào wéi Valencia hé Interlagos, zhè liǎng kuǎn chǔlǐ qì jiāng huì yōng yòu 6、 8 yǐ jí 12 gè chù lǐ qì hé xīn .
AMD zhì jīn cóng wèi cǎi yòng guò tóng bù duō xiàn chéng ( SMT) yě jiù shì Intel suǒ chēng de chāo xiàn chéng jì shù。 suī rán zhè yàng de jì shù zài dāng nián de P4 shí dài xiǎn dé bìng wú shí jì yòng tú, dàn dào liǎo xiàn zài, yuè fā pǔ jí de duō xiàn chéng huán jìng ràng chāo xiàn chéng chóngxīn huàn fā liǎo qīng chūn。
yǐ mù qián de yìng yòng huán jìng lái kàn, chāo xiàn chéng jì shù kě yǐ ràng yī xiē tè dìng yìng yòng chéng xù xiǎn zhù tí sù dá 10 dào 15%。 chú liǎo Intel de zài Nehalem、 Atom děng zhōng yǐn rù de chāo xiàn chéng, wú lùn IBM de Power xì liè, Sun de T1/T2/Rock xì liè děng chǔlǐ qì jià gòu dū yìng yòng liǎo lèi sì de SMT tóng bù duō xiàn chéng jì shù, yòng shǎo liàng de jīng tǐ guǎn dài lái dà fú dù de duō xiàn chéng xìng néng tí shēng。
yī wèi AMD gōng chéng shī rì qián xiàng méi tǐ tǎn chéng, bù zhī chí dān hé duō xiàn chéng jì shù ràng Opteron chǔlǐ qì kàn qǐ lái xìng néng bǐ bù shàng Intel de dī duān Xeon。 jù chēng, AMD nèi bù gāo céng yǐ jīng chéng rèn, méi yòu zǎo zǎo yǐn rù cǐ lèi jì shù shì yī xiàng jì shù xuǎn zé shàng de shī wù。
bù guò, AMD fù zǒng cái jiān fú wù qì gōng zuò zhàn yè wù zǒng jīng lǐ PatrickPatla jiē shòu cǎi fǎng shí, bìng méi yòu míng què tòu lù dān hé duō xiàn chéng jì shù de wèi lái, ér shì jì xù chóngshēn yǐ jīng gōng bù de Opteron lù xiàn tú:“ rú guǒ nǐ kàn yī xià wǒ men lù xiàn tú yǐ jí wǒ men zài duō xiàn chéng chǔlǐ qì shì chǎng de biǎo xiàn jiù huì zhī dào, wǒ men xiāng xìn měi tiáo xiàn chéng dū yōng yòu wán zhěng de hé xīn shì mù qián de zuì jiā xuǎn zé。 2010 nián, wǒ men jiù huì tuī chū 12 hé chǔlǐ qì, 2011 nián 16 hé。 wǒ men xiāng xìn wèi lái jǐ nián nèi wǒ men jiù néng gòu wán shàn zhī chí 48 huò 64 xiàn chéng huán jìng, ràng wǒ men lái kàn kàn 2012 dào 2013 nián huì dài lái xiē shénme bā。”
jì rán 2011 nián cái shì 16 hé, nà me 2012 dào 2013 zhí jiē tiào yuè dào 48 shèn zhì 64 hé sì hū bìng bù shì nà me zhèng cháng。 lìng wài, PatrickPatla qián miàn jù jù dōuzài jiǎng“ hé”, ér dào liǎo hòu miàn yòu biàn chéng liǎo“ xiàn chéng”, sì hū jiù zài 'àn shì dào shí AMD kě néng huì cǎi nà dān hé duō xiàn chéng jì shù。 |
|
- : multithread, multi-thread
|
|
jìn chéng | xià zài | dān xiàn chéng | jì suàn jī | ruǎn jiàn | windows | api | CPU | biān chéng | xiàn chéng | Pthread | linux duō xiàn chéng | |
|
|
duō xiàn chéng xù | duō xiàn chéng jì shù | C yǔ yán duō xiàn chéng | tóng bù duō xiàn chéng | duō xiàn chéng chuán shū | duō xiàn chéng xià zài | yìng jiàn duō xiàn chéng | duō xiàn chéng chǔlǐ | duō xiàn chéng kòng zhì | cǎi yòng duō xiàn chéng | duō xiàn chéng liú lǎn qì | duō xiàn chéng zhī chí kù | duō xiàn chéng fú wù qì | duō xiàn chéng shè jì mó shì | tào jiān mó shì duō xiàn chéng | duō xiàn chéng ping fú wù qì v1.3 | cpu duō xiàn chéng | Win32 duō xiàn chéng | JAVA duō xiàn chéng shè jì mó shì | duō xiàn chéng biān chéng jì shù yǔ shí lì | linux duō xiàn chéng | linux duō xiàn chéng shè jì | duō xiàn chéng pī liàng xià zài jī qì rén | Windows duō xiàn chéng biān chéng jì shù yǔ shí lì | duō xiàn chéng pī liàng xià zài jī qì rén (hdld)v2.9.1.8 | |
|