|
みなさん、色々とご意見有難う御座います。
渋木宏明(ひどり)様 >既に述べたとおり、Windows はリアルタイムOSではないので、「影響ある」のは間違いありません。 >ですが、具体的にどれだけ遅延するとか、どれくらい頻繁に起きるのかについては、実行環境の性能や実>行されている処理の内容等々によって大きな差があるため、確定的なことは何も言えまえん。 >ただ、現象が極端な気はするので、他に何か原因があるようには感じます。
確かに今まで記載した2秒Sleepのスレッドとソケットでエラーを発生させるスレッドを実行する簡単なアプリを作成しても同様の結果は得られませんでしたし、 実際のアプリでは、対象のスレッド以外にもデータ収集スレッドや定時処理スレッドなど 何本もスレッドを起動させているので、今回記載したCONNECTでエラーだけが原因ではありません。 また、実際の運用環境は、CONNECTでエラーになるようなこともない(はず?)ですが 問題になっている現象が2,3ヶ月に1度発生しているのが現状です。 発生時間はまちまちで特に何かの処理を行っている時間帯ではないです。
たまたまテスト環境で機器を全て揃えられなくて、 > 別スレッドで他の機器にTCPCLIENTを用いてCONNECT処理を行っているのですが、 > その相手のポートが閉じている場合、エラーが発生しCATCHされるタイミングでCPUの負荷が若干上がっています。 このタイミングで実環境と同じ現象を再現できたというだけです。
また、補足なのですが、 上記のTCPCLIENTのCONNECT処理も正常に接続できるまでループ処理を行っているのですが、 システム起動1発目のエラーをCATCHした時のみSleepの遅れが発生しています。 2発目以降のCATCHでは、同様の遅れは発生していません。
|