ホームページ  >  に質問  >  本文

javascript - 無限ループは使用できますか?それとも、私たちは実際に無限のサイクルの世界に生きているのでしょうか?

実際、この質問は次の質問に関連しています: PHP でスケジュールされた通知とリリースを時間通りに行うにはどうすればよいですか?

昔、先生は「コードを書くときに無限ループを絶対に書いてはいけない」といつも言っていました。これが最大のバグです。この概念が常に心に刻み込まれているので、あらゆる種類の無限ループを見ると、すべてを感じます。一種の軽蔑と巻き込み。

しかし、実際には多くのものが無限ループを使用していることがわかりました:

  1. php-resque 中に無限ループがあって、見た瞬間に好感度が一気に下がりました

  2. ブラウザの動作原理を確認すると、JS のイベント ループは実際には無限ループであり、カーネル コード C も無限ループのようです

……

無限ループにどれだけのものが入っているかわかりません

私たちのコンピュータは電源を入れてから無限ループに入っているというのは本当ですか? CPU が単に無限ループで動作しているだけなのでしょうか?これを明確にするのを手伝ってください。私は今とても混乱しています。無限ループがなければ、コードは実際には機能しません。誰も Web サイトにアクセスしなければ、コードは機能しません。どのようなイベント/シグナルがコールバックをトリガーするのか、そしてそれらはどのように実装されているのでしょうか? それは無限ループでもあるのでしょうか?

それとも、私たち人間は、絶えず情報を受け取り、フィードバックを与えるという無限ループの中にいます。そうでない場合、もしあなたが私に電話してすぐに応答できたとしても、あなたが私に通知したのは本当にあなただと思いますか? あなたには電話する能力がありますか?私が戻ってきましたか?面白い!聞いてました、いいですか?

神様が混乱を解消してくださることを願っています ^_^

補充:

この情報を読んでいると、次のような言葉がよく出てきます:

libevent
libev
PCNTL
イベントループ
timerfd
epoll
kqueue
select
poll

私の疑問を解決するために助けてください。どのような情報とどの本を読むべきですか?「Linux/UNIX ネットワーク プログラミング」

###ありがとう!

高洛峰高洛峰2667日前808

全員に返信(6)返信します

  • 迷茫

    迷茫2017-05-31 10:36:05

    私たちのコンピューターは電源を入れてからずっと無限ループになっているのでしょうか? CPU が無限ループで動作しているだけでしょうか?

    継続的な作業は無限ループですか? OS は CPU の実行時間を断片化し、それを別のプロセスに割り当てます。時々、OS は制御を取り戻し、再び送信し、このようなサイクルが続きます。

    しかし、このループは死んでいないので、关机をクリックすることでループを終了できます。


    コールバックをトリガーするイベント/シグナルはどのように実装されていますか?

    はい、Eventloop には継続的な監視が必要ですが、これはこの方法でのみ実現できます。そして、私たちが目にするものは 事件发生 => 执行回调 とても自然なことですが、これは抽象化です。

    しかし、これは死んだわけではないので、ブラウザを閉じてこのサイクルを終了することができます。


    もしかしたら、私たち人間は常に情報を受け取ってはフィードバックするという無限ループの中に陥っているのかもしれません。そうでない場合、あなたが私に電話をかけてきたとしたら、私はすぐに応答できますが、私に電話をかけたのはあなただと本当に思いますか?戻る?面白い!聞いてました、いいですか?

    人間は無限ループというよりはステートマシン (FSM) に近いと思います。

    入力に応じて状態を変化させ、値を出力する(人間対話)

    人間の脳が命令を順番に実行するかどうかはわかりませんが、人間は、運転、料理、聞く、話す、さまざまな言語での読み書きなど、境界があいまいな物事を扱うことができます。別のことを考えてください。つまり、割り込み信号がたくさんあります。いつでも禁止できるため、無限ループなどというものは存在しないのかもしれません。


    読むべき情報や本を教えてください

    コンピュータの構成とオペレーティングシステムの原理と実装を見てみてはいかがでしょうか?

    返事
    0
  • PHPz

    PHPz2017-05-31 10:36:05

    「Ruby Metaprogramming」の一文がとても良いので、ここに載せるのが適切だと思います

    メタプログラミングはまったくなく、常にただプログラミングされています。

    無限ループについても同じことが言えると思います。それは、それをどのように使用するかによって決まります。より良い解決策が存在する場合は、コードの優雅さが重要です。同様に重要なことですが、無限ループはまったく存在せず、常にループのみが存在します。

    返事
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-31 10:36:05

    無限ループを使用できますか?

    無限ループ != 無限ループ != 空のループ

    無限ループはバグであり、スタックの原因となります
    イベントループなどの無限ループ
    スピン待機などの空のループ


    それとも、私たちは実際に無限のサイクルの世界に生きているのでしょうか?

    実際、サイクルから抜け出すために自殺することもできます

    説明しないでください
    乱暴に考えないでください、ナンセンスで哲学について話すのは非常に中流階級の行動です
    民間の哲学者になるのはやめてください

    返事
    0
  • 黄舟

    黄舟2017-05-31 10:36:05

    マイクロコントローラーのコードを書いたことがありますか?
    しばらく(1)です
    電源オフまたは割り込みで終了
    ウォッチドッグもあります

    返事
    0
  • phpcn_u1582

    phpcn_u15822017-05-31 10:36:05

    オペレーティング システムは無限ループと考えることができます

    この質問は壮大すぎて説明するのが難しいです

    しかし、プログラミングを学ぶときは、不必要な無限ループを避けるように努めるべきです。手順には始まりと終わりがあり、考え方が明確であることが最善です。

    返事
    0
  • 巴扎黑

    巴扎黑2017-05-31 10:36:05

    無限ループというよりは、メタ ループには他のループと同様に始まりと終わりがあると言った方が適切ですが、他のループはメタ ループの一部であり、それを通過すると消滅します。無限ループが終わると元の地点に戻ります。

    返事
    0
  • キャンセル返事