私はこのようなスレッドがあります。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に影響を及ぼしますか?また、スレッドがスリープモードに入っている間にincomming接続はどうなりますか?
はい。あなたが誰かに接続しようとしているとき、コードは奇妙です、あなたはDoSomethingだけです。だから、心配しないで、代わりにAcceptSocketを呼び出すだけで、コアが燃え尽きるのを避けるためにスリープする必要はありません。 –
私はthread.sleepなしでそれを実行すると、プログラムは私のCPU(amd x6 phenom)の33%、thread.sleepで17%しかかかりません。だから、スレッドが接続を眠るときにはまだペンディングができますが、受け入れることはできません。 – Husky110
Thread.Sleep(100)コールで17%のコアを焼く方法はかなりわかりません。 Anyhoo、あなたはAcceptSocketから得られる0%を間違いなく選ぶべきです。 –