カテゴリー: go concurrent

  • Go言語チャットサーバー

    Go言語チャットサーバー

        このセクションでは、これまでに学んだ知識に基づいて、複数のユーザー間でテキスト メッセージをブロードキャストできるチャット サンプル プログラムを開発します。   サーバープログラム サーバープログラムにはメイン […]

  • Go 言語 CSP: 通信シーケンス プロセスの簡単な説明

    Go 言語 CSP: 通信シーケンス プロセスの簡単な説明

        Go は 2 つの同時実行形式を実装しています。1 つは一般的に知られているマルチスレッド共有メモリで、実際にはJavaやC++などの言語でのマルチスレッド開発です。もう 1 つは Go 言語に固有のものであり、 […]

  • Go 言語におけるデッドロック、ライブロック、スターベーションの概要

    Go 言語におけるデッドロック、ライブロック、スターベーションの概要

        このセクションでは、デッドロック、ライブロック、スターベーションの 3 つの概念を紹介します。   デッドロック デッドロックとは、複数のプロセス(スレッド)が実行中にリソースの奪い合いにより待ち合い、外部からの […]

  • Go 言語待機グループ (sync.WaitGroup)

    Go 言語待機グループ (sync.WaitGroup)

        チャネルとミューテックスを使用して Go 言語で 2 つの同時プログラムを同期することに加えて、待機グループを使用して複数のタスクを同期することもできます。待機グループは、同時環境で指定された数のタスクの完了を保 […]

  • Go 言語ミューテックス (sync.Mutex) と読み取り/書き込みミューテックス (sync.RWMutex)

    Go 言語ミューテックス (sync.Mutex) と読み取り/書き込みミューテックス (sync.RWMutex)

        Go 言語パッケージの sync パッケージは、sync.Mutex と sync.RWMutex という 2 つのロック タイプを提供します。   ミューテックスは最も単純なタイプのロックですが、比較的暴力的で […]

  • Go言語のマルチコア並列化

    Go言語のマルチコア並列化

        Go言語は高い同時実行性をサポートする特徴があり、マルチスレッド処理を容易に実装でき、マルチコアCPUの性能を最大限に活用できます。   ご存知のとおり、ほとんどのサーバー プロセッサはシングルコアの周波数が低く […]

  • Go言語チャネルのタイムアウトメカニズム

    Go言語チャネルのタイムアウトメカニズム

        Go 言語には直接的なタイムアウト処理メカニズムがありませんが、いわゆるタイムアウトは、オンラインで Web サイトを閲覧するときに、一定時間操作しなかった場合に再度ログインする必要があると理解できます。   で […]

  • Go言語のバッファリングされたチャネル

    Go言語のバッファリングされたチャネル

        Go のバッファリングされたチャネルは、受信する前に 1 つ以上の値を保存するチャネルです。このタイプのチャネルでは、ゴルーチン間の送信と受信を同時に行う必要はありません。チャネルが送受信アクションをブロックする […]

  • Go 言語のバッファリングされていないチャネル

    Go 言語のバッファリングされていないチャネル

        Go 言語のバッファなしチャネルとは、値を受信する前に値を保存する機能がないチャネルを指します。このタイプのチャネルでは、送信ゴルーチンと受信ゴルーチンの両方が同時に送信および受信操作を完了する準備ができている必 […]

  • Go 言語の一方通行チャネル – チャネル内の一方通行の通り

    Go 言語の一方通行チャネル – チャネル内の一方通行の通り

        Go 言語の型システムには単方向チャネル型が用意されており、その名前が示すように、単方向チャネルはデータの書き込みまたは読み取りにのみ使用できます。もちろん、チャネル自体が読み取りと書き込みを同時にサポートする必 […]