스레드 풀링을 사용하여 큐에서 메시지를 가져 오는 멀티 스레딩 개념을 구현하고 있습니다. thread 메소드의 외부로부터 특정의 메세지를 픽업하는 thread의 ID/번호에 액세스 할 필요가 있습니다. 세 개의 스레드가 있고 큐에서 5 개의 메시지를 가져와야한다고 가정합니다. 첫 번째 스레드가 첫 번째 메시지를 처리하여 처리합니다. 한편 두 번째 스레드는 다른 메시지를 가져 와서 처리하기 시작했습니다 (멀티 스레딩). 여기에 몇 가지 다른 방법에서, 어떤 스레드가 실제로 message1을 선택하는지 알고 싶습니다. 일관성은 스레드 기능 내부뿐만 아니라 응용 프로그램 전반 (스레드 기능 외부에서도)에서도 유지되어야합니다. 내가 다른 방법에서 변수 strThread 액세스 및 로깅을 위해 필요의 consistency.This을 유지하려면 어떻게외부 스레드 처리 메서드에서 스레드 풀 스레드의 스레드 ID 가져 오기
For m_intThread1 = 0 To m_stuTPConfig.intNumThreads - 1
ThreadPool.QueueUserWorkItem(New WaitCallback(AddressOf **MultiProcessMQ**), m_intThread1)
System.Threading.Thread.Sleep(1000)
Next m_intThread1 'm_intThread
Public Shared Sub MultiProcessMQ(ByVal state As Object)
Dim objParentProcess As New ParentProcess
objParentProcess.ProcessThread(CType(state, String))
If Interlocked.Decrement(CInt(m_stuTPConfig.intNumThreads)) = 0 Then
m_asyncOpsAreDone.Set()
End If 'Interlocked.Decrement(CInt(m_stuTPConfig.intNumThreads)) = 0
End Sub 'MultiProcessMQ()
Public Sub ProcessThread(ByVal strThread As String)
intThrd = Convert.ToInt32(strThread)
Console.WriteLine("Parent Thread started " & strThread)
End Sub
다음과 같이 i는 멀티 스레딩을 구현했습니다.
서식을 지정해 주셔서 감사합니다. 우리는 WCFMQAdapter 서비스를 사용하고 있습니다.이 서비스는 입력 및 출력 대기열에 따라 응용 프로그램을 구성하는 데 사용됩니다. ProcessThread에서이 서비스를 호스트하면 컨트롤은 service.vb 파일에있는 스레드와 관련된 모든 작업이 수행되고 다시 돌아 오지 않는 다른 파일로 이동합니다. 실제 스레드 사용은 service.vb 파일의 파일에 처리 세부 정보를 기록하는 데 사용됩니다. 이제 PROCESSTHREAD 메서드가 호출되었습니다. 지금까지는 다중 스레딩 특성이 유지됩니다. 서비스가 이러한 스레드 정보를 service.vb로 전달하는 방법을 호스트하면됩니다. 또는 부모 스레딩/자식 스레딩 개념이 있어야합니까? 그리고 managedThreadId를 사용하여 threadid를 얻으면 동적 스레드 ID가 생성됩니다. 그 (것)들을 얻고 그것을 사용자 관리 ID로 변환 할 수있는 기회가 있습니까? 스레드 21, 스레드 44, thread66, thread89 ....... 대신 thread1, thread 2, thread 3, thread 4처럼 변환 할 수 있습니까? Thanks in Advance :-)
응답 해 주셔서 감사합니다. 각 스레드의 고유 ID를 가져올 수있었습니다. 그러나 파일간에 전환이 발생하면 스레드 ID가 변경됩니다. 고유 한 것이 아니라 프로세스 와이드가 될 스레드 ID를 전달할 수있는 다른 옵션이 있나요? – Ramya
@Ramya - 질문에 형식을 다시 지정하고 'm_intThread1' (정수) 새로운 스레드에'state' (Object)와'strThread' (String) -이 변환을 허용하는 VB.NET의 경이로움! 어쨌든 3 개의 코드 블록 각각이'strThread'에 효과적으로 접근 할 때 여러분이 가지고있는 문제를 보지 못했습니다. 질문에 대해 자세히 설명해 주시겠습니까? – Enigmativity