このような状況を考慮してください。 1つのメインgoroutine
と10個の補助 のゴルーチンがあります。すべてのユーザーはchannel
にアクセスできます。メインチャンネルは1000
の番号をこのチャンネルに送信し、子機の番号はこのチャンネルから読み取ります。 各従属ゴルーチンが100個の数字を正確に読み取ることが保証されているか、またはこの金額はいくつかのゴルーチンが99個の数字と101個の数字を読み取るように変わることがありますか?チャネル経由の通信
答えて
いいえ、すべてのゴルーチンのランタイムに依存し、ゴルーチンがCPUにどれだけうまく分散されているかによって異なります。
興味深いところですが、GoRoutinesのスケジュール方法に関するブログ記事[here](https://rakyll.org/scheduler/)が見つかりました。 –
バッファされていないチャネルを介したゴルーチンのスケジューリングでは、チャネルは純粋にブロックメカニズムとして機能します。つまり、値は決して「チャネルに送信される」ということではありません。
バッファリングされていないチャンネルは純粋に同期メカニズムとして機能します。チャネル上で送信するゴルーチンの場合、 "ゴルーチンが受信できるようになるまでスリープ"し、受信するゴルーチンの場合は "ゴルーチン送信準備ができています "。
これは、送信と受信にフェアネスまたは配信システムが組み込まれていないことを明確にする必要があります。純粋に先着順であり、スケジューラの現在の負荷によってはさらに恣意的です。
CSPの考え方では、この区別は不要であり、あなたの説明は事柄を明確にするのに役立たない。バッファされていないチャネルは、データイベントが流れる「通常の」チャネルです。バッファされたチャネルには拡張された動作があります。 –
これは概念的に正しいものを置く方法だと確信していますが、「データイベントの流れ」という言葉はパイプやキューを私の心に持っています。つまり、データイベントは相手の状態に関係なく受け入れられます。 。しかし、これは、バッファ内のチャンネルがGoでどのように動作するかではありません。 –
- 1. スタックレスPythonでは、チャネル経由でチャネルを送信できますか?
- 2. Simpyの同期通信チャネル
- 3. インタフェース経由のフラグメント間の通信
- 4. C/C++経由でのRDP通信
- 5. <router-outlet>経由のコンポーネント通信
- 6. UART経由のiPadアクセサリー通信
- 7. COMポート経由のC++通信
- 8. node.js経由でアンドロイドプッシュ通知を送信
- 9. GAE経由で通信するAndroidクライアント
- 10. MacからiPhoneへのアプリ通信Wi-Fi経由での通信
- 11. 重大度:マネージャ[localhost#/]:TCPチャネル経由でメッセージを受信できません
- 12. Wifi経由のプッシュ通知
- 13. WiFi経由のプッシュ通知
- 14. Raspberry Pi 2とインターネット経由のPCとの通信
- 15. ポート経由のElmへの外部Firebase通信?
- 16. Python経由のTCP-IP通信とSSH接続のオープンポート
- 17. Android用の「ベスト」方法イーサネット経由のArduino通信
- 18. apiゲートウェイのhttp経由でリンクされたドッカーコンテナ間の通信
- 19. アンドロイド:プロセスを経由してリモートサービスの通信について
- 20. COM11経由でIE11のIneterprocess通信を理解する
- 21. Silverlightからwebbrowser経由でwinformsへの通信
- 22. USB経由でアンドロイドアプリとPCアプリケーションとの通信
- 23. OS XからUSB経由のiOS通信に?
- 24. HTTP経由のリアルタイム双方向JSON-RPC通信
- 25. ハイパーターミナル経由でJavaを使用するハードウェアとの通信
- 26. LIVE USBブートによるUSB経由でのシリアル通信
- 27. チャネルとBashとの通信:送信終了
- 28. postgresql通知チャネル
- 29. PHP:SMTP経由でメールサーバーと通信する方法は?
- 30. Windowsでネットワーク経由でドライバと通信する
保証はありません。そのような保証はなぜ必要ですか? – tkausl
@ tkauslはゴルーチン間でタスクを均等に配布します –
このような保証はないだけでなく、通常の状況下で起こると想定する理由もありません。 – Flimzy