ホームページ  >  記事  >  バックエンド開発  >  swooleサーバーのタイマーが不正確で不安定です 回答してください。

swooleサーバーのタイマーが不正確で不安定です 回答してください。

WBOY
WBOYオリジナル
2016-09-02 08:57:051227ブラウズ

タイマーによって出力されたログには、次のようにジッターが表示されます。
timer: ##23496 ##2016-09-01 19:23:24
timer: ##23496 ##2016-09-01 19:23: 25
タイマー: ##23496 ##2016-09-01 19:23:27
タイマー: ##23496 ##2016-09-01 19:23:27
タイマー: ##23496 ##2016-09-01 19 :23:28
タイマー: ##23496 ##2016-09-01 19:23:29
タイマー: ##23496 ##2016-09-01 19:23:30
タイマー: ##23496 ##2016 - 09-01 19:23:31
タイマー: ##23496 ##2016-09-01 19:23:33
タイマー: ##23496 ##2016-09-01 19:23:33
タイマー: ## 23496 ##2016-09-01 19:23:36
タイマー: ##23496 ##2016-09-01 19:23:37
タイマー: ##23496 ##2016-09-01 19:23:39
タイマー: ##23496 ##2016-09-01 19:23:39
タイマー: ##23496 ##2016-09-01 19:23:40
タイマー: ##23496 ##2016-09-01 19: 23 :41
タイマー: ##23496 ##2016-09-01 19:23:42
タイマー: ##23496 ##2016-09-01 19:23:43
タイマー: ##23496 ##2016-09 - 01 19:23:45

タイマーへのプロセス信号登録に問題はありませんか?それとも、シグナルとサーバーを一緒に使用することに問題がありますか?
コードは次のとおりです:

リーリー

返信内容:

タイマーによって出力されたログには、次のようにジッターが表示されます。
timer: ##23496 ##2016-09-01 19:23:24
timer: ##23496 ##2016-09-01 19:23: 25
タイマー: ##23496 ##2016-09-01 19:23:27
タイマー: ##23496 ##2016-09-01 19:23:27
タイマー: ##23496 ##2016-09-01 19 :23:28
タイマー: ##23496 ##2016-09-01 19:23:29
タイマー: ##23496 ##2016-09-01 19:23:30
タイマー: ##23496 ##2016 - 09-01 19:23:31
タイマー: ##23496 ##2016-09-01 19:23:33
タイマー: ##23496 ##2016-09-01 19:23:33
タイマー: ## 23496 ##2016-09-01 19:23:36
タイマー: ##23496 ##2016-09-01 19:23:37
タイマー: ##23496 ##2016-09-01 19:23:39
タイマー: ##23496 ##2016-09-01 19:23:39
タイマー: ##23496 ##2016-09-01 19:23:40
タイマー: ##23496 ##2016-09-01 19: 23 :41
タイマー: ##23496 ##2016-09-01 19:23:42
タイマー: ##23496 ##2016-09-01 19:23:43
タイマー: ##23496 ##2016-09 - 01 19:23:45

タイマーへのプロセス信号登録に問題はありませんか?それとも、シグナルとサーバーを一緒に使用することに問題がありますか?
コードは次のとおりです:

リーリー

これは正常です。コンピューターの時計設定を開いて、秒が 4 秒短いか 5 秒長いかを確認してください。詳細は以下をご覧ください

少し前に、リスクラブの誰かが、Windows システムの秒針が最初の 4 秒間は速く動き、次の 1 秒間は遅く動くと言いました。それから彼は、それは地球上の劇的な変化を予告する今年始まったばかりであり、待つのはばかげていると言いました。非常に不賛成です。しかし、この速度が異なるという現象は真実であることがわかり、これはプログラムの問題であると誰かが説明してくれました。

注意深く注意を払った場合は、2K/XP/2K3 システムの右下隅にある時計をクリックして秒針を動かします。非常に興味深い現象が表示されます。最初の数字と秒針が急速に変化します。 4秒、5秒は長く感じますが、なぜですか?

その理由は実際にはそのテーブルの正確さにあります。

Windows C++ プログラミングを学習したことがある場合は、WM_TIMER が一般的に使用されるタイマーであることをご存知でしょう。ただし、このタイマーの精度はそれほど高くありません。 Windows Clock サブルーチンでは、WM_TIMER が実際にタイミングに使用されます。秒針が表示されている場合、テーブルの更新は次のようなステートメントによってトリガーされます:

SetTimer (hWnd、タイマーID、OPEN_TLEN、0L);

SetTimer の使い方は非常に簡単です。タイマーを設定した後は、現在の時刻を再取得し、トリガーされるたびにダイヤルを再描画するだけです。 OPEN_TLEN はタイマーのトリガー時間です。この時間は定数であり、影響を受けるシステムでは 450 として定義されており、0.5 秒未満です。

450msと定義するとどうなるでしょうか?一連の数字を見てみましょう。 1 行目と 3 行目は更新の数で、その下は更新のミリ秒数です。

1 2 3 4 5 6 7 8

450 900 1350 1800 2250 2700 3150 3600


9 10 11 12 13 14 15 16 17

4050 4500 4950 5400 5850 6300 6750 7200 7650


最初の 1 秒間 (

では、なぜこのようなデザインになっているのでしょうか?おそらく、この時計は時間の感覚を与えるだけなので、間違えなければ、二番目の反応は重要ではありません...結局、二番目を見つめる人はこの世に多くありません。一日中手と数を数えます。

上記の説明はオパールに由来しています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。