ホームページ  >  記事  >  バックエンド開発  >  goroutine がチャネルに書き込まない

goroutine がチャネルに書き込まない

王林
王林転載
2024-02-06 08:30:08777ブラウズ

goroutine 未写入通道

質問の内容

初めて利用するのですが、次のコードの使用に問題があります

リーリー

ゴルーチン pdfgeneratefromhtml から情報を受け取りますが、buf は値を受け取らないため、このコードが配置されている関数はサイズ 0 を返します。バイト。

ご協力をよろしくお願いいたします。よろしくお願いします


正解


このコードは本質的に同期です。ハンドラーはバイトのスライスを生成し、これらのバイトの準備ができたら c.blob メソッドを使用してそのスライスを返します。 投稿されたコードは goroutine で作業を開始しますが、

は作業が完了するのを待たずに

、null バイトのスライスを返します。 この問題は、ゴルーチンを削除することで解決できます。

リーリー

このコードの唯一の問題は、すべてのデータをメモリにロードすることですが、

pdf.generatefromhtml

[]byte を返す場合、これは避けられません。 必要に応じて、pdf.generatefromhtml を更新して io.reader を返し、c.stream. を使用することでこれを改善できます。

以上がgoroutine がチャネルに書き込まないの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。