這是乙個系列,我們先從簡單的開始
我們以crazycoder工作室為例,現在6個工作室成員
因工作需要,工作室成員需要做乙個專案,因為是多個人做,那麼我們用多執行緒來做
首先定義成員類 userinfo(表示成員資訊),還有乙個方法work()表示工作
public
class
userinfo
set
}///
///執行緒執行具體方法 注意:必須是void型別,不能為靜態方法
///by crzycoder
///public
void work()
}現在開始寫執行緒**
public
class
workthread}}
這是乙個簡單的多執行緒例子,呼叫方法 new
crazycoderthread
().projectthread();
即可我們解決了簡單的多執行緒問題了,現在問題出來了,現在有個project對瘋狂工作室很重要,我們能實現多個成員共同工作但是如何實現任務分配呢?
提供乙個解決方案,答案是在成員類上,我們對userinfo類做如下改動
public
class
userinfo
set
}private
string _workdetail;
//////
**細節 可以理解為**分工,這個屬性裡我們對crazycoder工作室成員進行工作分工
///by crazycoder
///public
string wrokdetail
set
}///
///執行緒執行具體方法 注意:必須是void型別,不能為靜態方法
///這裡實現了執行緒分工
///by crazycoder
///public
void work()
else}}
同樣我們對執行緒類改造
//////
c#多執行緒系列教程 瘋狂**工作室出品
///by crazycoder
///public
class
crazycoderthread}}
到這裡,我們已經可以實現對執行緒的分工了,希望能給大家幫助
道理很簡單,我們就是在**定義的時候對執行緒進行了分工
僅作入門之用參考
多執行緒在執行的時候除錯很麻煩,特別是在執行之後出錯,這裡我們就需要對執行緒進行日誌處理
多執行緒執行時出錯時有可能會引起整個執行緒池的崩潰,從而引起程序的意外關掉,那麼在寫程式的時候我們一方面要在可能出錯的地方try{}catche{},另外乙個好習慣就是寫日誌,發乙個日之類
發乙個日誌函式
//////
寫入日誌by crazycoder
////
首發///
///日誌檔名,不需要帶路徑
///日誌內容,單位為行
public
static
void writelog(string filename,string content)
//每個日誌寫一行crazycoder.cn
sw2.writeline("--" + datetime.now.tostring() + "---" + content);
sw2.flush();
sw2.close();
}catch
}///
///獲得當前絕對路徑by crazycoder.cn 含web和winform應用程式方法
//////
指定的路徑
///絕對路徑
public
static
else
//非web程式引用
}同時在容易出錯的地方,在try catch的地方寫日誌,就很容易知道多執行緒出錯的地方,並方便的進行除錯
實現執行緒通訊的例子有很多種,我們這裡介紹幾個簡單的例子給大家看
第二篇我們對執行緒進行了簡單的分工,但是存在乙個問題,小b並不知道小a的工作完成了沒有,並且小b執行緒需要在小a的工作完成之後才能接著做下面的工作,但是小a在機子的辦公室裡懶得出來,他只在辦公室裡說我的工作完成了,但是小b小c都不知道,小b和小c在自己的辦公室裡聽不到小a說的話(我們把每個執行緒比作乙個獨立的辦公室),如此下來,小b和小c只能閒置下來,我們想辦法要讓小b和小c知道小a的工作已經完成了!
老闆急了,這個時候需要考慮發工資的問題,讓人閒著的話是巨大的人力資源和財力的浪費,老闆就想這個時候我們最好的辦法就是給成員們的辦公室裡辦個**,可以互相通**,**總機放在我這裡,為了避免成員偷懶,我讓總機把他們的工作狀態都記錄下來,給成員們每個動作都進行了偵聽,方便高效的考核和發工資。
老闆這人比較更懶,想一下上面的方法雖然可以解決他們偷懶的問題,但是每次讓我去問太麻煩了,我更懶得乙個**乙個**的問,算了,噁心他們,通知小a,如果你工作做完了,就通知總機,小b和小c定時打給總機問小a是否完成了工作,那麼我們就通過**總機的自動應答來協調a,b,c之間的工作吧
這樣**就很簡單了,我們這樣定義
using
system;
using
system.collections.generic;
using
system.text;
using
system.threading;
namespace
crazycoder.
多執行緒教程
set
}public
void
多執行緒幹活()
}public
class
員工set
}private
string _state;
public
string state
set}
public
void
幹活()
if (_
工作內容 == "b")
//幹活
}if (_
工作內容 == "c")
//幹活}}
}}
ice 多執行緒同步範例
include include include include using namespace std templateclass queue public iceutil monitor void put const t item t get catch t item q.front q.pop ...
執行緒操作範例
例項要求 設計乙個執行緒操作類,要求可以產生三個執行緒物件,並可以分別設定三個執行緒的休眠時間。如下所示 問怎麼設計?從之前學習知道,執行緒的實現有兩種方式,一種是繼承thread類,另一種是實現runnable介面。而且類中應儲存執行緒名稱和休眠時間屬性。在thread類中直接存在name屬性。所...
執行緒操作範例
例項要求 要求 設計乙個執行緒操作類,要求可以產生三個執行緒物件,並可以分別設定三個執行緒的休眠時間,如下所示 執行緒a,休眠10秒 執行緒b,休眠20秒 執行緒c,休眠30秒 問 此類該如何設計?分析從之前的學習應該可以知道,執行緒的實現有兩種方式,一種是繼承thread類,另外一種是實現runn...