ホームページ  >  記事  >  バックエンド開発  >  (再投稿) 興味深い記事: 兄さん、私はスレッドです

(再投稿) 興味深い記事: 兄さん、私はスレッドです

WBOY
WBOYオリジナル
2016-06-13 12:29:21737ブラウズ

(再投稿) 興味深い記事: 私はスレッドです

差出人: プログラマー離職率 (WeChat ID: coderising)

著者: IBM Liu Xin

私はスレッドです、生まれたときに番号が割り当てられました: 0x3704、そして私は私は暗い部屋に入ると、そこには私と全く同じ仲間がたくさんいました。

私の仲間 0x6900 は長い間留まっており、人生の浮き沈みを感じながら私にこう言いました。

私たちのスレッドの運命はパッケージを処理することです。 荷物を扱ったらすぐにここに戻ってこなければ、二度と戻って来れないかもしれません。

パッケージ、どのパッケージですか?

「心配しないでください、すぐにわかります、私たちはここで怠け者を育てていません。」

案の定、間もなく家のドアが開き、激しい-探している男が叫びました:

"0x3704、出てきて!"

出てくるとすぐに重い荷物が詰め込まれていて、そこには説明書が書かれた紙がありました。

"急いでこのパッケージを処理してください。"

"処理する場所"

"指示に従って、まず準備ができたワークショップに行きます"

案の定、地面に標識の矢印があり、それに従って広い明るい部屋に行きました。ここにはすでにたくさんの糸があり、まるでいつでも先へ急ぐ準備ができているかのように緊張していました。

入るとすぐにアナウンスが聞こえました:「0x3704、作業場に入ってください」

私は急いで前に歩きました、そして私の後ろの多くの人がコメントしました:

"彼はとても幸運です さて、「

」が準備完了状態になるとすぐに実行できることは重要ですか?「

」いいえ、優先度がどれだけ高いかを見てください。 🎜>

目の前にあるのはとても美しいワークショップです。古いスレッドがいつもうるさいのも不思議ではありません。ここに永遠に居られたらいいのにと思います。

ここの空間は広く、景色は良く、空気は新鮮で、鳥はさえずり、花は香りが良く、見たこともない人がたくさんいて、ウェイターのように私にサービスを待っています。

それらには番号もあり、さらに重要なのは、それぞれにハードディスク、データベース、メモリ、ネットワーク カードというラベルが付いていることです。 . .

今は理解できません。手順を見てみましょう:

ステップ 1: パッケージからパラメータを取り出します

パッケージを開くと、中に HttpRequest オブジェクトがあり、userName とpassword の 2 つのパラメータを取得できます

第 2 ステップ: ログイン操作を実行します

ああ、誰かがログインしようとしているようです。ユーザー名とパスワードをその人に渡しました。彼はデータを受け取り、ゆっくりと去っていきました。

なぜ彼はそんなに遅いのですか?でも、とにかく3番目のステップを実行できないので、しばらくワークショップにいてもいいですか?

このとき、ワークショップ内で放送が鳴りました:

「0x3704、私は CPU、実行している手順を覚えておいて、すぐに荷物を持って立ち去ってください。」

ゆっくり片付け始めました

「他の糸がすぐ入ってくるから早くして」

この作業場を出て、また大きな部屋に来ました、たくさんの糸がありますスレッドはこちら ゆっくりとお茶を飲みながらトランプをする。

「お兄さん、何もすることはないんですか?」

「あなたはここに来たのは初めてです、私がデータベースサーバーからのデータを待っていることを知らないのですね!」彼らは私たちの何十倍も遅いと言われています。ここでゆっくり休んでください。「

」「ここの誰かがシステムにログインするのがそんなに遅いのですか?」

「心配しないでください、あなたは人間の世界について聞いたことはありません。ある日、CPU にとっては 1 年ですか? ここでは時間を測定するためにナノ秒とミリ秒を使用します。世界で 1 秒を待っています私たちにとっては数日分です。遅すぎます。「

ちょっとお昼寝してください。どれくらい時間がかかったのかわかりませんが、スピーカーが再び放送を開始しました。

「0x3704、あなたのデータはここにあります。行って実行してください。」

振り返って CPU ワークショップに駆け寄ると、ここにいる人は出入りしかできません!

後ろから爆笑が聞こえました:

「彼は確かに新入社員です。準備の整った作業場に行かなければならないとは知りませんでした。」

それで彼は準備が整った場所のワークショップに急いだのですが、今回はあまり幸運ではなく、再び CPU ワークショップに呼ばれるまで長い間待ちました。

待っている間、誰かがささやいているのが聞こえました:

「最近スレッドが殺されたって聞いた?」

「なぜ?」

「これ」男は CPU ワークショップに留まり、CPU 使用率を 100% に引き上げ続けた後、殺されました。"

"彼を殺した後、どこへ行ったのですか?"

"多分それはゴミだったでしょう。

私は心の中で震え、すぐに対処を続けました。さらにアクションブロックを受け入れ、ログインの 2 番目のステップが成功しました

ステップ 3: ログイン成功後にホームページを構築する

このステップは、大量の HTML が必要となるため、少し時間がかかります。誰がコードを書いたのか分からないまま対処するのは面倒です。

緊張して HTML を作成していると、CPU が呼び出しを開始しました:

「0x3704、私は CPU、実行している手順を覚えておいて、すぐにパッケージを持って帰ってください。」

「なぜですか?」

「各スレッドは一定期間のみ CPU 上で実行できます。時間が経過すると、他のスレッドが使用する必要があります。準備ができたワークショップに行き、 「

これで、この 2 つの準備完了状態を何回実行したかわかりませんが、ようやくインストール ステップ リストの作業が完了しました。

最後に、HTML を含むパッケージが正常に返送されました。

ログイン後に何をするかについては、私は気にしません。

暗い部屋に戻ろうとしています。ここを離れるのは耐えられません。

しかし、いくつかのスレッドに比べれば、私はまだ幸運です。実行後に完全に破壊されますが、私はまだ生きています。

暗い部屋に戻ると、古いスレッド 0x6900 が尋ねました:

「どうでしたか? 初日はどうでしたか?」

」第一に、いつ処刑に選ばれるかわかりません。第二に、処刑のプロセス中はいつでも中断される可能性があります。 CPU ワークショップを放棄します。

第三に、ハードディスクが出現すると、データベースなどの時間のかかる操作を CPU に任せて待機させる必要があります。 「

」 若者はよく理解しています。 >「なぜ多くのスレッドが実行後に死ぬのか理解できません。なぜ私たちはまだ生きているのですか?」

「まだわかりません。不死性は私たちの特権です。ここにはスレッド プールと呼ばれる正式な名前があります。」 !"

平凡な日々が毎日こんな感じ 昔は糸のように荷物を受け取って処理して薄暗い家に帰るのが日常だった: スレッド プール。

ある日、私が戻ってきたとき、兄弟が「今日はゆっくり休んでください、明日は最もクレイジーな日になるでしょう」と言っているのを聞きました。

カレンダーを見てみると、明日は11月11日です。

案の定、真夜中を過ぎた頃、彼らは大量の荷物に対処するために、必死で荷物を配達していた。スレッドプールには誰も空いていませんでした。全員がパッケージの処理に出かけました。それでも、CPU ワークショップの使用率は非常に高く、ハードドライブは異常なほど点滅しています。は未だに処理が終わらず、山のように積まれています。

選択肢がありません。これらのパッケージのほとんどは単にページを閲覧し、注文し、購入し、購入するだけです。

どれくらい時間がかかったのかわかりませんが、バオバオ山はついにゆっくりと消えていきました。

やっと一息つけることができたこの日のことは一生忘れないと思います。

この出来事を通して、私は自分が住んでいる世界を理解しました。これは電子商取引ウェブサイトだということです。

私の毎日の仕事は、ユーザーのログイン、閲覧、ショッピング カート、注文、支払いを処理することです。

スレッドプールのベテラン 0x6900 に尋ねました。「どれくらいの時間作業しなければなりませんか?」

「システムが再起動するまで待たなければなりません」、 0x6900 は言いました

" システムの再起動を経験したことがありますか? "

" どうしてそんなことが可能なのでしょうか?、システムの再起動は私たちの死の瞬間、つまり世界の終わりです。一度再起動すると、 、スレッドプール全体が破壊され、時間も空間もすべてが消えて最初から始まります。「

」いつ再開しますか?「

」 言うのは難しいですが、ただ人生を楽しんでください。あなたの目の前..."

実際、人生は豊かでカラフルです。私のお気に入りのパッケージは写真をアップロードすることです。ネットワークが遅いため、準備ができたワークショップとCPUに留まることができます長い間ワークショップに参加し、たくさんの興味深いスレッドを知ることができました。

たとえば、最後に memecached スレッドに会ったとき、彼は大量のユーザー データが彼を通じてキャッシュされ、それが配布されたと言いました。 多くのマシンで利用可能です!

その後のログイン操作が非常に速くなったのも不思議ではありません。データベースからデータが取得されなくなったことがわかりました。他のマシンに行ったことがありますか?

彼は、データにアクセスするたびにネットワーク経由でそのマシンに GET と PUT コマンドを送信することしかできないのに、他には何も分からないのはなぜだろうと言いました。

たとえば、前回待機中にデータベース接続スレッドに遭遇したとき、スレッド プールとほぼ同じである接続プールもあることを知りました。

彼は、一部の荷物が非常に変態的だったので、1 年分の注文データまでチェックしたと言い、私は死ぬほど疲れました。

私は、あなたをノックダウンします、と言いました。あなたがデータを私に渡した後、私はそれを HTML に組み立てる必要があります。

JDBC 接続をより簡単に実現するには、memecached と良好な関係を築き、memecached から直接データを取得し、データベースへの直接呼び出しをできるだけ少なくする必要があると彼は言いました。

はい、はい、重要なのは、事前にデータをキャッシュに入れておかなければならないということです。そうしないと、最初にキャッシュに問い合わせたときにデータがなかった場合でも、検索する必要があります。あなた?

人生なんてこんなものだ、楽しくなければ意味がない?

ある日、私は外で死にそうになり、スレッドプールに戻ることができなくなりました...

実際、私はこの危険を予測できたはずでした。 。

数日前、http から送信されたいくつかの入金および出金パッケージを処理しました。古いスレッド 0x6900 から特に次のような質問がありました。

「これらの荷物を扱うときは特に注意してください。最初にロックを取得する必要があります。アカウントに入金または引き出しをするときは、アカウントをロックする必要があります。そうしないと、他のスレッドがブロックされます。彼はあなたを利用するでしょう。」あなたが待っている間に、私はとても乱暴だったので、あなたを利用しました。」

私を「脅かす」ために、彼は親切な 0x6900 は、次の 2 つのテーブルも提供しました:

1。 >

2. 施錠状況

それを見てとても怖かったですドアロックをしないと、このような重大な事故が発生することが判明しました。

これからは入出金の荷物を見るときは気をつけます 幸いなことに事故はありませんでした。

今日受け取った荷物は、有名な俳優の口座から有名な監督への送金でした。金額は決して小さくありません。 🎜> 私 古いスレッドの指示によると、まず有名な俳優のアカウントをロックし、次に有名な監督のアカウントをロックする必要があります。

しかし、私が予想もしなかったのは、別のスレッド (そう、0x7954) が存在し、同時に監督から俳優にお金を送金していたということでした。

つまり、次のことが起こりました:

最初は何が起こっているのか分からず、待ちの作業場に座って待っていたのですが、待ち時間が長すぎて数十秒! こんなことは今まで経験したことがありません。

その時、私はスレッド 0x7954 を見つけました。彼はそこに座ってのんびりコーヒーを飲んでいました。私は彼とチャットを始めました。

「お兄さん、コーヒーを 8 杯飲んだようですね。」仕事に行かないの?」

「お茶を9杯も飲みませんでしたか?」 0x7954 が答えました。

「ロックを待っています。どの孫がロックを解除しないのか分かりません。」

「私もロックを待っています。どれが分かるか分かりますか?」孫がロックを解除しないので、撲殺します。」 0x7954 には弱さの兆候はありません。

こっそり見てみたら、この男は私が待っていた所長の錠前を腕に抱いていませんでしたか?

明らかに、0x7954 も、私が待ち望んでいたロックを保持しているのを発見しました。

すぐに私たち二人はお互いに譲ることを拒否して喧嘩を始めました

:

「先にロックを渡して、先に終わらせてください」

「いいえ、いつも仕事が終わったらロックを解除します。今は絶対に渡せません」

口論から喧嘩へ立ち上がるのにかかる時間はほんの数秒です。

さらに重要なのは、私たち 2 人がこの有名な監督と俳優のロックを保持しているだけでなく、他の多くのロックも保持しているため、待機スレッドがますます増え、部屋は視聴者でいっぱいです。

最後には、これまで見たことのない究極のボス「オペレーティングシステム」も登場しました。

ビッグボスは結局のところ、情報に詳しいのです。彼はそれを見て鼻を鳴らして、軽蔑的に言いました:

「また行き詰まりです」

そのうちの一人を殺したい、さあ、くじを引きに来てね。」

これにはおしっこが出そうなほど怖かった、とても深刻だ!

慎重にくじを引いて開けてみると、それは「生きる」という文字でした。

ああ、ついに私の命は救われました。

哀れな 0x7954 はすべてのリソースを引き渡すことを強制された後、残念ながら殺されて行方不明になりました。

ディレクターのロックを取得したので、作業を開始できます。

ビッグボスのオペレーティングシステムは一陣の風のように消え、彼の声だけが後ろから聞こえてきました:

覚えておいてください、ここでは私たちは監督>俳優です、状況に関係なく、最初に取得する必要があります監督の承認ロック

監督や俳優だけでなく、他の多くの人々が存在するため、ボスはリソースのサイズを計算するために使用されるアルゴリズムであるテーブルを残しました。計算後は常に計算されます。ロックを取得する方法:

私はスレッドプールに戻り、誰もが私の冒険を知っていました。私の周りに集まり、質問をやめました。

悪質なスレッド スケジューラが Big Boss アルゴリズムを壁に投稿しました。

私たちは毎朝、悪徳不動産業者や美容院のウェイターのように、玄関に立って猿に騙されるように大声で唱えなければなりません:

」 複数のリソース ロック要件 覚えておいてください、Boss のアルゴリズムに従ってサイズを比較し、最大のものからロックする必要があります。

----------------------------------------------- -- ---------

何日も経ってから、私と他のスレッドは奇妙なことを発見しました。それは、パッケージの処理がますます簡単になっているということです

どのようなパッケージであっても、ログイン、ブラウジング、お金の節約など、手順は同じで、固定の HTML ページが返されます

一度覗いてみると、次のように書かれていました:

「このシステムは今夜 0:00 から 4:00 までメンテナンスとアップグレードが行われます。ご迷惑をおかけして誠に申し訳ありません。」

古いスレッド 0x6904 にそのことを伝えに行きました。

「ああ、私たちの命は終わってしまった。もうすぐシステムが再起動され、私たちは消滅してしまうようだ。さようなら、兄弟

システム」ついに再始動の時が来ました。

家の中のものすべてが一つずつ消えていくのが見えました。待機作業場、準備完了作業場、さらには CPU 作業場さえもゆっくりと消えていったのです。

私の周りのスレッド兄弟はどんどん減り、ついに私だけが残りました。

私は野原で叫びました:他に誰かいますか?

答えはありません。

私たちの世代のスレッド プールはその使命を完了しました。

次世代スレッドプールは間もなく生まれ変わります。

(終わり)

この記事を読んで何かを学んだ場合は、記事に誤りがあった場合は、高評価をお願いします。ご指摘ください。

お互いから学び、一緒に進歩しましょう!

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