는이 같은 스레드를 가지고 :Thread.Sleep은 TCPListener를 비활성화합니까?
Public Sub StartWork()
Try
myTCPListener.Start()
While StopRequest = False
Dim requestspending As Boolean = m_TCPListener.Pending()
If myTCPListener.Pending = False Then
Threading.Thread.Sleep(100)
Else
DoSomething()
End If
End While
Catch ex As Exception
Throw ex
End Try
End Sub
이제 내 질문 : 나는 아무것도 여기에 일이 없을 때 슬립 모드로 Thread.sleep를 통해 스레드를 보냅니다. 이것은 어떻게 든 작업의 TCPListener에 영향을 미치며 스레드가 절전 모드에있는 동안 연결되지 않은 연결은 어떻게됩니까?
예. 코드가 이상합니다. 누군가가 연결하려고 할 때만 DoSomething을 사용합니다. 귀찮게하지 마시고 대신 AcceptSocket을 호출하십시오. 그러면 레코딩 코어를 피하기 위해 잠을 자지 않아도됩니다. –
문제는 thread.sleep없이 프로그램을 실행하면 thread.sleep에서 내 CPU (amd x6 phenom)의 33 %를 차지하며 17 % 만 차지한다는 것입니다. 그래서 스레드가 연결을 잠들 때 여전히 보류 수 있지만 받아 들일 수 없다, 나는 그 권리를 얻었나요? – Husky110
Thread.Sleep (100) 호출로 17 % 코어를 구울 수있는 방법이 꽤 명확하지 않습니다. Anyhoo, AcceptSocket에서 얻는 0 %를 확실히 선호해야합니다. –