ruby on railsでサイトを作ってみました。ここで、フラッシュ/アクション スクリプトでチャット/ゲームを作成する必要があり、ゲーム サーバーは Ruby で作成することにしました (主に、AR モデルが既にあるため、Ruby は私が知っている言語であり、チャット/ゲームはほとんどが IO バウンドであり、計算量は多くありません)。最初は、各クライアントのスレッドであるマルチスレッド アプリ (jruby で実行) を使用すると考えていました。その後、それは悪い考えだと気づきました。次に、select/kqueue/epoll の使用を考えました。ツイスト (python 用) のようなライブラリがあるかどうかを調査しましたが、ルビー用であり、EventMachine (多かれ少なかれ同じことを行います) があることがわかりました。私は物事を行うイベント/コールバックの方法に頭を悩ませていますが、大丈夫だと思います. ただし、次のことが 1 つあります。ActiveRecord を使用すると、データベース クエリがブロックされることを意味することに気付きました。これは悪いことです。オンラインで「非同期 ActiveRecord」を調べたところ、興味深いもの (asynchrony、neverblock、em_postgresql など) が見つかりましたが、それらを適用する方法はまだわかりません。私が正しく理解していれば、非同期は基本的にファイバーを使用した EM であり、通常のコードのように見えるイベント コードを記述できます (誰かがこれを説明してくれませんか?)。Em_postgresql は (私が思うに) ファイバーを使用して非同期で動作する postgresql ドライバーだと思います。あれは正しいですか?非同期は基本的にファイバーを使用した EM であり、通常のコードのように見えるイベント コードを記述できます (誰かがこれを説明してくれませんか?)。Em_postgresql は (私が思うに) ファイバーを使用して非同期で動作する postgresql ドライバーだと思います。あれは正しいですか?非同期は基本的にファイバーを使用した EM であり、通常のコードのように見えるイベント コードを記述できます (誰かがこれを説明してくれませんか?)。Em_postgresql は (私が思うに) ファイバーを使用して非同期で動作する postgresql ドライバーだと思います。あれは正しいですか?
私はかなり迷っており、postgresql データベースに対して非ブロッキング ActiveRecord 呼び出しを行う基本的な EM サーバーの例を誰かに教えてもらいたいです (主に、これが私が使用するものだからです)。
あと、もう一つわからないことがあります。EventMachine は主にシングル スレッドですが、遅延にはスレッドを使用します。デフォルトの Ruby インタープリターには、緑色のスレッドしかありません。EventMachine はどのようにシステム スレッドを使用できますか? 主にC++だからですか?
ご協力いただきありがとうございます。