実際、この質問は次の質問に関連しています: PHP でスケジュールされた通知とリリースを時間通りに行うにはどうすればよいですか?
昔、先生は「コードを書くときに無限ループを絶対に書いてはいけない」といつも言っていました。これが最大のバグです。この概念が常に心に刻み込まれているので、あらゆる種類の無限ループを見ると、すべてを感じます。一種の軽蔑と巻き込み。
しかし、実際には多くのものが無限ループを使用していることがわかりました:
php-resque 中に無限ループがあって、見た瞬間に好感度が一気に下がりました
ブラウザの動作原理を確認すると、JS のイベント ループは実際には無限ループであり、カーネル コード C も無限ループのようです
……
無限ループにどれだけのものが入っているかわかりません
私たちのコンピュータは電源を入れてから無限ループに入っているというのは本当ですか? CPU が単に無限ループで動作しているだけなのでしょうか?これを明確にするのを手伝ってください。私は今とても混乱しています。無限ループがなければ、コードは実際には機能しません。誰も Web サイトにアクセスしなければ、コードは機能しません。どのようなイベント/シグナルがコールバックをトリガーするのか、そしてそれらはどのように実装されているのでしょうか? それは無限ループでもあるのでしょうか?
それとも、私たち人間は、絶えず情報を受け取り、フィードバックを与えるという無限ループの中にいます。そうでない場合、もしあなたが私に電話してすぐに応答できたとしても、あなたが私に通知したのは本当にあなただと思いますか? あなたには電話する能力がありますか?私が戻ってきましたか?面白い!聞いてました、いいですか?
神様が混乱を解消してくださることを願っています ^_^
補充:
この情報を読んでいると、次のような言葉がよく出てきます:
libevent
libev
PCNTL
イベントループ
timerfd
epoll
kqueue
select
poll
私の疑問を解決するために助けてください。どのような情報とどの本を読むべきですか?「Linux/UNIX ネットワーク プログラミング」
###ありがとう!迷茫2017-05-31 10:36:05
私たちのコンピューターは電源を入れてからずっと無限ループになっているのでしょうか? CPU が無限ループで動作しているだけでしょうか?
継続的な作業は無限ループですか? OS は CPU の実行時間を断片化し、それを別のプロセスに割り当てます。時々、OS は制御を取り戻し、再び送信し、このようなサイクルが続きます。
しかし、このループは死んでいないので、关机
をクリックすることでループを終了できます。
コールバックをトリガーするイベント/シグナルはどのように実装されていますか?
はい、Eventloop には継続的な監視が必要ですが、これはこの方法でのみ実現できます。そして、私たちが目にするものは 事件发生
=> 执行回调
とても自然なことですが、これは抽象化です。
しかし、これは死んだわけではないので、ブラウザを閉じてこのサイクルを終了することができます。
もしかしたら、私たち人間は常に情報を受け取ってはフィードバックするという無限ループの中に陥っているのかもしれません。そうでない場合、あなたが私に電話をかけてきたとしたら、私はすぐに応答できますが、私に電話をかけたのはあなただと本当に思いますか?戻る?面白い!聞いてました、いいですか?
人間は無限ループというよりはステートマシン (FSM) に近いと思います。
入力に応じて状態を変化させ、値を出力する(人間対話)
人間の脳が命令を順番に実行するかどうかはわかりませんが、人間は、運転、料理、聞く、話す、さまざまな言語での読み書きなど、境界があいまいな物事を扱うことができます。別のことを考えてください。つまり、割り込み信号がたくさんあります。いつでも禁止できるため、無限ループなどというものは存在しないのかもしれません。
読むべき情報や本を教えてください
コンピュータの構成とオペレーティングシステムの原理と実装を見てみてはいかがでしょうか?
PHPz2017-05-31 10:36:05
「Ruby Metaprogramming」の一文がとても良いので、ここに載せるのが適切だと思います
メタプログラミングはまったくなく、常にただプログラミングされています。
無限ループについても同じことが言えると思います。それは、それをどのように使用するかによって決まります。より良い解決策が存在する場合は、コードの優雅さが重要です。同様に重要なことですが、無限ループはまったく存在せず、常にループのみが存在します。
给我你的怀抱2017-05-31 10:36:05
無限ループを使用できますか?
無限ループはバグであり、スタックの原因となります
イベントループなどの無限ループ
スピン待機などの空のループ
それとも、私たちは実際に無限のサイクルの世界に生きているのでしょうか?
実際、サイクルから抜け出すために自殺することもできます
説明しないでください
乱暴に考えないでください、ナンセンスで哲学について話すのは非常に中流階級の行動です
民間の哲学者になるのはやめてください
phpcn_u15822017-05-31 10:36:05
オペレーティング システムは無限ループと考えることができます
この質問は壮大すぎて説明するのが難しいです
しかし、プログラミングを学ぶときは、不必要な無限ループを避けるように努めるべきです。手順には始まりと終わりがあり、考え方が明確であることが最善です。
巴扎黑2017-05-31 10:36:05
無限ループというよりは、メタ ループには他のループと同様に始まりと終わりがあると言った方が適切ですが、他のループはメタ ループの一部であり、それを通過すると消滅します。無限ループが終わると元の地点に戻ります。