不要なChannelFutureを作成せずにNettyチャンネルに書き込むことはできますか? (GC用に不要なオブジェクトを生成しないで...)ChannelFutureなしのNettyチャンネルへの書き込み
答えて
あなたは本当にあなたがChannelFuture
を作成しない希望する場合は、ネッティー3のためにこれを行うことができます。
Channels.write(ctx, Channels.succeededFuture(channel), message);
Channels.succeededFuture(..)
は、チャネルのローカルシングルトンオブジェクトを返します。ただし、すでに完了しているため、返された未来にリスナーを追加しないでください。
ctx.write(msg, ctx.voidPromise());
ChannelHandlerContext.voidPromise()
が満たされることはありませんダミーシングルトン約束を返します。
はネッティー4では、あなたは無効と約束を使用することができます。リスナーを追加する、またはリスナーが実行されるまで待機するなどの操作は、すぐに失敗します。
いいえ... ChannelFutureは常に作成されます。しかし、ChannelFutureは安価で小さなものなので、最適化を探すより良い場所があると思います。
私はもっと重要なのは、システムコールでは書き込みが高価になる可能性があるので、Channel.write(..)をできるだけ少なく呼び出すことだと思います。したがって、複数のバッファを送信する必要がある場合は、それらをすべて1つに入れ、Channel.write(...)を1回だけ呼び出すことができます(たとえば5回ではありません)。
SMTPでは、SMTPサーバーがPIPELINING拡張機能をサポートしていて、リソースを最適に使用するなどの場合にこれを行うことができます。
ありがとうございます。 – Eirenliel
- 1. 書き込み時のNettyバッファリング応答
- 2. ファイルへの書き込み
- 3. ハフマンアルゴリズムファイルへの書き込み
- 4. ファイルへの書き込み
- 5. DataContextへの書き込み
- 6. Wikiへの書き込み
- 7. フレームバッファへの書き込み
- 8. Android - オンラインmysqlデータベースへの書き込み/書き込み
- 9. ファイルへの読み書きの高速読み込みと書き込み
- 10. ループ内のチャンネルに書き込む
- 11. AndroidからPCへのUSBの読み込み/書き込み
- 12. Androidの書き込み/読み込み中の画像へ
- 13. InputStreamからの読み込みとOutputStreamへの書き込み
- 14. VC++のXMLへの書き込みと読み込み
- 15. ファイルへのC++の読み込みと書き込み
- 16. ELMAHログ情報のカスタムテーブルへの読み込み/書き込み
- 17. Pythonの行への書き込み
- 18. CUDAのグローバルメモリへの書き込み
- 19. Javaでのテンポラリファイルへの書き込み
- 20. Javaのテキストファイルへの書き込み
- 21. のLinuxプログラミング:デバイスファイルへの書き込み
- 22. 複数のファイルへの書き込み
- 23. マルチスレッドのテキストファイルへの書き込み
- 24. Androidのテキストファイルへの書き込み
- 25. C#アプリケーションのレジストリへの書き込み
- 26. Javaの配列への書き込み
- 27. NSXMLDocumentの.xmlへの書き込み
- 28. accpacのSQLデータベースへの書き込み
- 29. C++でのファイルへの書き込み
- 30. AndroidのCSV RAMへの書き込み
ありがとう、それは役に立ちます。 – Eirenliel
successedFutureにハンドラを追加するとどうなるのですか?これを行うコードは、未来がすでに成功していることを認識していないかもしれませんか?私の経験によれば、リスナーは追加された後すぐに呼び出されます。これはほとんどの人が私が思っているものです。それとも、時間が経つにつれてリスナーを集めるシングルトンなのでしょうか?この点に関して、Channels.succeededFuture(..)と新しいSucceededChannelFuture(...)の違いはありますか? – user462982
@trustin - Netty 5の構文をこの質問にインラインで表示できますか? – jeevatkm