用C 實現蜘蛛 爬蟲程式的多執行緒控制

2021-04-21 18:14:10 字數 1216 閱讀 3909

好了,認識、分析完問題,就是解決問題了:

多執行緒在c#中並不難實現。它有乙個命名空間:system.threading,提供了多執行緒的支援。

要開啟乙個新執行緒,需要以下的初始化:

threadstart startdownload = new threadstart( download );

//執行緒起始設定:即每個執行緒都執行download(),注意:download()必須為不帶有引數的方法

thread downloadthread = new thread( startdownload ); //例項化要開啟的新類

downloadthread.start();//開啟執行緒

1.如何控制線程的數量?

3.如何判斷執行緒結束?

4.如何控制線程結束?

下面就這幾個問題提出解決方法:

1.執行緒數量我們可以通過for迴圈來實現,就如同當年初學程式設計的打點程式一樣。

比如已知使用者指定了n(它是乙個int型變數)個執行緒吧,可以用如下方法開啟五個執行緒。

thread downloadthread;

這個聲名應為類級,這樣也就為其它方法控制項它們提供了可能

threadstart startdownload = new threadstart( download );

//執行緒起始設定:即每個執行緒都執行download()

downloadthread = new thread[ n ];//為執行緒申請資源,確定執行緒總數

for( int i = 0; i < n; i++ )//開啟指定數量的執行緒數

if ( times > n ) //如果已經嘗試夠了次數,則退出程序

else//如果沒有嘗試夠次數

//進行下一步針對得到的url的處理

}4.這個問題相對簡單,因為在問題一中已經建議,將執行緒聲名為類級陣列,這樣就很易於控制。只要用乙個for迴圈即可結束。**如下:

for( int i = 0; i < n; i++ )//關閉指定數量n的執行緒數

好了,乙個蜘蛛程式就這樣完成了,在c#面前,它的實現原來如此簡單。

這裡筆者還想提醒讀者:筆者只是提供了乙個思路及乙個可以實現的解決方案,但它並不是最佳的,即使這個方案本身,也有好多可以改進的地方,留給讀者思考。

最後說明一下我所使用的環境:

winxp sp2 pro

vfp 9.0

visual studio 2003 .net中文企業版

編寫可靠的多執行緒蜘蛛程式

thursday,24.august 2006,05 52 14技術 此篇專為qq群 17371752 搜尋引擎.資料.蜘蛛 中的朋友做主題研討之用 1.蜘蛛程式長啥樣?蜘蛛程式的是搜尋引擎中最關鍵的後台程式之一,它必須十分可靠,可以長期執行而無需經常維護。但是我往往看到許多朋友開始做蜘蛛程式的時候...

用Thread建立多執行緒的C 程式

比較亂,素材也是來自網路,如果有什麼問題可以聯絡我處理。這份 給出了一種簡單建立多執行緒的方法,建立執行緒時傳入函式位址即可。當然還有別得方法像createthread,自認為該方法比較複雜 include includeusing namespace std void foo 簡單的無參函式 vo...

用C 實現多執行緒Mutex鎖

準備知識 1,核心物件互斥體 mutex 的工作機理,waitforsingleobject函式的用法,這些可以從msdn獲取詳情 2,當兩個或更多執行緒需要同時訪問乙個共享資源時,系統需要使用同步機制來確保一次只有乙個執行緒使用該資源。mutex 是同步基元,它只向乙個執行緒授予對共享資源的獨佔訪...