我有以下代碼:類和線程
public class Search
{
StringBuilder sb = new StringBuilder();
string[] myparams;
public void Start()
{
//Start search threads
for (int i = 0; i < 50; i++)
{
tasks.Add(Task.Factory.StartNew(() =>
{
string text1 = GetFirstRequest(url, myparams);
string text2 = GetFirstRequest(url, myparams);
}, ct, TaskCreationOptions.LongRunning, TaskScheduler.Default));
}
}
private string GetFirstRequest(string url, string[] myparams)
{
//Use stringbuilder to build the complete url with params
//Use webrequest, response and stream to return the url contents
}
private string GetSecondRequest(string url, string[] myparams)
{
//Similar to GetFirstRequest
}
}
對於我的主要形式我打電話:
Search search = new Search();
search.Start();
正如你可以從上面的代碼中看到,創建單獨的線程。但是,每個線程都正在調用Search類中的相同私有函數以訪問該URL。
代碼是線程安全的嗎?將私有函數放入單獨的類併爲每個線程創建一個類會更好嗎?
誰知道?我們應該看看那些功能裏面有什麼。如果他們訪問(寫作)班級成員,那麼他們可能不安全... –
真的不清楚你在做什麼。你爲什麼要旋轉50個全部調用'GetFirstRequest'的線程? – Sean
'url'和'params'來自任何地方,'StringBuilder sb'的用法還不清楚。所以_「代碼是否線程安全?」非常不可信。 –