|
|
8#

樓主 |
發(fā)表于 2006-11-22 20:55:20
|
只看該作者
呵呵 越說(shuō)越有嚼頭,我不知道學(xué)長(zhǎng)是否知道偽線(xiàn)程的概念。還有操作系統(tǒng)的操作原理,呵呵概念有點(diǎn)大,其實(shí)我研究的也不太深,只是講講我個(gè)人的觀(guān)點(diǎn)。
不知道大家有沒(méi)有影像,當(dāng)我們按下ctrl+Alt+Del的時(shí)候,我們可以看見(jiàn)很有正在運(yùn)行的線(xiàn)程。他們實(shí)際上就是一個(gè)個(gè)main函數(shù),當(dāng)然也可以說(shuō)是winmain函數(shù),尤其是學(xué)過(guò)win32的朋友對(duì)這種觀(guān)點(diǎn)尤其深刻。因?yàn)榇蠹矣胏或者是c++做軟件的時(shí)候接觸的更多的是win32,尤其是mfc,但是有幾個(gè)人是直接用c/c++編程的?
我先寫(xiě)個(gè)例子
int main(int num,char**para)
{
while(1)
{
wait(5);
if(para[0][0] == .....
{
}
else if(para[0][1]==.....
{
}
else if(para[0][1]==.....
{
}
else
{
}
}
}
假定上面的工程文件為porc,那么編譯后就是proc.exe文件,
那么在主程序,也就是主線(xiàn)程里面我們通過(guò)專(zhuān)用的函數(shù)來(lái)啟動(dòng)他
比方說(shuō)
int hdProcessID = ShellExecute("../proc.exe","para");
我想分析上面的函數(shù)
ShellExecute是啟動(dòng)可執(zhí)行文件的函數(shù),返回值是一個(gè)可以唯一標(biāo)志該線(xiàn)程的標(biāo)識(shí)符。
第二個(gè)參數(shù)就是上面main函數(shù)需要的參數(shù)
如果把上面的int 寫(xiě)成HINSTANCE大家可能會(huì)更接受點(diǎn)。
有點(diǎn)操作系統(tǒng)基礎(chǔ)知識(shí)的人多知道,如果在主線(xiàn)程中我們建立個(gè)虛擬表,用來(lái)保存這些hdProcessID ,我們就可以很好地操控這些線(xiàn)程,所以一個(gè)系統(tǒng)的好壞其實(shí)就是這張表和查詢(xún)方式的好壞,不知道這么說(shuō)師兄是否能理解我的意思
我想師兄考慮得多線(xiàn)程概念不會(huì)只是ThreadBegin之類(lèi)的mfc函數(shù)或類(lèi)吧,這些從理論上來(lái)講只是偽線(xiàn)程,只是我兩站的角度不一樣,你說(shuō)的是win32而我說(shuō)的是純c/c++當(dāng)然也利用了一些win32函數(shù),我感覺(jué)沒(méi)必要再用匯編或c去寫(xiě)這些接口吧
最后就是勸上面那位小兄弟,至于什么候氏之類(lèi)的書(shū)建議你不要去看,他們的水平太高,寫(xiě)的書(shū)很讓人摸不著頭腦。 |
|