在我的應用程序中我有一個父線程。我想知道如果我暫停執行父線程,子線程會發生什麼?他們會繼續執行還是會被暫停,並等待父線程恢復執行?請幫幫我。在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. 在linux中的C線程?
- 3. 在C中的線程#
- 4. Parallel.Invoke中的線程在c#
- 5. c#在setter中的線程
- 6. 在C編程中的線程(linux)
- 7. 在C#中創建線程
- 8. 在C中鎖定線程#
- 9. 在C++中使用線程
- 10. 在C#中線程的未知數量的線程#
- 11. 線程池在C#
- 12. 多線程在C++
- 13. 多線程在C++
- 14. Posix線程在C++
- 15. 線程Syn在C++
- 16. 線程C++類中
- 17. 在C#中的線程池類管理線程執行
- 18. 線程在OpenMP的C++
- 19. 運行的線程在C#
- 20. C#中的線程操作
- 21. C++中的微線程
- 22. C++中的異步線程
- 23. c中的線程問題#
- 24. Objective-C中的多線程
- 25. 關於c中的線程#
- 26. 使用C++中的線程
- 27. asp.net/c#中的線程
- 28. C#中的線程問題
- 29. c中的線程超時#
- 30. C++ builder中的線程
您最好向我們展示一些代碼。 – Steven 2011-03-22 07:29:43
你爲什麼想看代碼? – jgauffin 2011-03-22 07:32:00