在我的應用程序中我有一個父線程。我想知道如果我暫停執行父線程,子線程會發生什麼?他們會繼續執行還是會被暫停,並等待父線程恢復執行?請幫幫我。在c中的線程#
在c中的線程#
回答
線程並沒有真正的父/子關係 - 一旦線程已經啓動,它就獨立於創建它的線程。我很擔心你對父主題使用「suspend」這個詞 - 雖然暫停一個主題通常是一個糟糕的主意,尤其是,如果你的意思是叫Thread.Suspend
,你應該知道這已經被棄用了。你是什麼意思,如果你想在線程間協調工作,有更好的方法。)
示例代碼,顯示四個線程正在工作,正在暫停,正在恢復,然後進程終止:
using System;
using System.Threading;
public class A
{
static void Main()
{
// Start off unpaused
var sharedEvent = new ManualResetEvent(true);
for (int i = 0; i < 4; i++)
{
string prefix = "Thread " + i;
Thread t = new Thread(() => DoFakeWork(prefix,
sharedEvent));
// Let the process die when Main finished
t.IsBackground = true;
t.Start();
}
// Let the workers work for a while
Thread.Sleep(3000);
Console.WriteLine("Pausing");
sharedEvent.Reset();
Thread.Sleep(3000);
Console.WriteLine("Resuming");
sharedEvent.Set();
Thread.Sleep(3000);
Console.WriteLine("Finishing");
}
static void DoFakeWork(string prefix, ManualResetEvent mre)
{
while (true)
{
Console.WriteLine(prefix + " working...");
Thread.Sleep(500);
mre.WaitOne();
}
}
}
我正在做一個巨大的計算在我的應用程序。我的應用程序有一個暫停按鈕。我希望我的應用程序暫停,如果some1點擊暫停按鈕,並恢復它的ececution如果點擊一下Resume按鈕。我的應用程序有一個父線程。在兩個不同的函數中,我已經在每個函數中啓動了4個線程。我正在使用線程池。 – 2011-03-22 07:38:42
@Sanchaita:你應該暫停*合作*在每個工作線程內,定期檢查某個共享布爾值是否需要暫停。或者,您可以使用'ManualResetEvent',並定期等待 - 在暫停時重置它,並將其設置爲繼續。 – 2011-03-22 07:40:45
我正在做WaitOne把我的所有線程在1點。我在哪裏應該實現它。在WaitOne之後或之前。我可以使用暫停 – 2011-03-22 08:13:44
線程在.Net中沒有真正的父子關係 - 所以掛起一個線程w生病不會暫停其他線程發生它已經創建。
簡而言之,如果您的意思是孩子是從您調用父母的另一個線程開始的線程,那麼不會因爲主線程被暫停而暫停孩子線程。 檢查此示例: http://www.codersource.net/microsoft-net/c-basics-tutorials/c-net-tutorial-multithreading.aspx
- 1. 線程在c#中?
- 2. 線程在C#中
- 3. c#在setter中的線程
- 4. 在linux中的C線程?
- 5. 在C中的線程#
- 6. Parallel.Invoke中的線程在c#
- 7. 在C編程中的線程(linux)
- 8. 在C中的多線程進程#
- 9. 在C++/CLR中的線程編程
- 10. 在C中執行線程#
- 11. 在C中同步線程#
- 12. 在C#中創建線程
- 13. 在C++中使用線程
- 14. 在C++中定義線程
- 15. 在C#中停止線程
- 16. 在C中鎖定線程#
- 17. 如何在openMP中產生線程中的子線程(C++)
- 18. 在C#中線程的未知數量的線程#
- 19. 在C中關閉線程與C#
- 20. 線程C++類中
- 21. 多線程在C++
- 22. 多線程在C++
- 23. 線程Syn在C++
- 24. 線程池在C#
- 25. Posix線程在C++
- 26. 在C#中的線程池類管理線程執行
- 27. C#中的線程和TcpListener#
- 28. c中的win32線程
- 29. Objective-C中的多線程
- 30. Objective C中的線程
您最好向我們展示一些代碼。 – Steven 2011-03-22 07:29:43
你爲什麼想看代碼? – jgauffin 2011-03-22 07:32:00