javascript - 無限ループは使用できますか?それとも、私たちは実際に無限のサイクルの世界に生きているのでしょうか?
高洛峰
高洛峰 2017-05-31 10:34:05
0
6
806

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

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

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

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

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

……

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

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

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

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

補充:

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

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

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

###ありがとう!

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(6)
迷茫

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

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

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


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

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

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


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

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

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

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


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

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

いいねを押す +0
PHPzhong

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

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

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

いいねを押す +0
给我你的怀抱

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

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

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


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

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

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

いいねを押す +0
黄舟

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

いいねを押す +0
phpcn_u1582

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

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

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

いいねを押す +0
巴扎黑

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!