내 응용 프로그램에 부모 스레드가 있습니다. 부모 스레드의 실행을 일시 중단하면 자식 스레드는 어떻게 될지 알고 싶습니다. 실행을 계속할 것인가, 또는 일시 정지 해 친 thread가 실행을 재개 할 때까지 기다릴 것인가. 도와주세요.스레딩 C#
스레딩 C#
답변
스레드는 실제로 부모/자식 관계가 없습니다. 일단 스레드가 시작되면 스레드를 만든 스레드와 독립적입니다.
부모 스레드에 대해 "일시 중단"이라는 단어를 사용하는 것이 걱정됩니다. 스레드 일시 중단은 일반적으로 바람직하지 않습니다. 특히 Thread.Suspend
을 호출하는 경우 해당 스레드는 더 이상 사용되지 않습니다. 정확히 무엇을 의미합니까? 스레드 간 작업을 조정하려는 경우 더 좋은 방법이 있습니다.
작업을 수행하고 일시 중지되고 다시 시작되고 프로세스가 종료되는 4 개의 스레드를 보여주는 샘플 코드는 다음과 같습니다.
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이 다시 시작 단추를 클릭하면 해당 응용 프로그램이 다시 시작됩니다. 내 응용 프로그램에 상위 스레드가 있습니다. . 그리고 두 개의 다른 함수에서 나는 각 함수에 4 스레드를 시작했습니다. 나는 threadpool을 사용하고 있습니다. –
@Sanchaita : 공동 작업 *을 일시 중지해야합니다. 예 : 각 작업자 스레드 내에서 일시 중지해야하는지 여부에 대한 일부 공유 부울 값을 주기적으로 확인하십시오. 아니면 그냥 ManualResetEvent를 사용하여 주기적으로 기다릴 수 있습니다. 일시 중지하면 다시 설정하고 다시 시작하면 설정합니다. –
모든 스레드를 1 포인트로 가져 오기 위해 WaitOne을하고 있습니다. 구현해야 할 곳은 어디입니까? WaitOne 이전 또는 그 이전입니다. 잠깐 사용 가능합니다. –
스레드는 실제로 닷넷에서 부모 - 자식 관계가 없으므로 스레드 w를 일시 중단합니다. 그로 인해 생성 된 다른 스레드를 일시 중단하지 마십시오.
간단히 말해, child가 부모라고 부르는 다른 스레드에서 시작된 스레드 인 경우 주 스레드가 일시 중단 되었기 때문에 하위 스레드가 일시 중단되지 않습니다. 이 예를 확인하십시오 : http://www.codersource.net/microsoft-net/c-basics-tutorials/c-net-tutorial-multithreading.aspx
- 1. 스레딩 C
- 2. C# 스레딩
- 3. Erlang 및 C/C++ 스레딩
- 4. 다운로드 할 C++ 스레딩
- 5. C# 스레딩 및 동기화
- 6. 스레딩 실패 문제 C#
- 7. 스레딩 생성 및 C#
- 8. C# 스레딩 문제
- 9. C# 스레딩 문제
- 10. C# 스레딩 메모리 예외
- 11. C# 스레딩 문제
- 12. C#의 스레딩 잠금
- 13. C# 스레딩 경쟁 조건
- 14. C# AutoResetEvent의 스레딩 문제
- 15. C# 스레딩 메커니즘
- 16. 빠른 C# 스레딩 클래스
- 17. 목표 C 스레딩 질문
- 18. c 멀티 스레딩 과정
- 19. C# 스레딩 도움말
- 20. C++ 스레딩 질문
- 21. C 멀티 스레딩 원점
- 22. 스레딩 구현 (C#)
- 23. C# 스레딩 패턴 - 좋은 생각입니까?
- 24. C# 스레딩 및 AutoResetEvent 사용
- 25. C#의 스레딩. Interruptable task
- 26. C# 멀티 스레딩 공유 잠금
- 27. OS 독립적 인 C++ 스레딩?
- 28. C# 수동 재설정 이벤트로 스레딩
- 29. C# 멀티 스레딩 코드 검토
- 30. C++을 사용하여 Windows 스레딩
코드를 표시하는 것이 좋습니다. – Steven
왜 코드를보고 싶습니까? – jgauffin