私は現在、いくつかのイベントコードを書いています(geventを使用するpythonで)。nginxをWebサーバーとして使用していますが、どちらも素晴らしいと感じています。イベントにはトレードオフがあると言われましたが、見ることができませんでした。誰かが光を当てることができますか?
ジェームズ
私は現在、いくつかのイベントコードを書いています(geventを使用するpythonで)。nginxをWebサーバーとして使用していますが、どちらも素晴らしいと感じています。イベントにはトレードオフがあると言われましたが、見ることができませんでした。誰かが光を当てることができますか?
ジェームズ
イベントプログラミングの唯一の難しさは、ブロックしてはいけないということです。スレッドを念頭に置いて設計されたライブラリを使用する場合、これを実現するのは難しい場合があります。これらのライブラリを制御しない場合は、fork()+メッセージipcが最適です。
最大の問題は、スレッドがないと、1 つのクライアントがブロックされると、すべてのクライアントがブロックされることです。たとえば、1 つのクライアントがリソース (ディスク上のファイル、ページアウトされたメモリなど) を要求した場合、OS が要求プロセスをブロックする必要がある場合、すべてのクライアントは待機する必要があります。マルチスレッド サーバーは、1 つのクライアントだけをブロックし、他のクライアントにサービスを提供し続けることができます。
とはいえ、上記のシナリオが当てはまらない場合 (つまり、すべてのクライアントが同じリソースを要求する場合) は、イベント駆動型が適しています。