Windows 上で Golang 実行可能ファイルの単一インスタンスを確実に実行するにはどうすればよいですか?

DDD
リリース: 2024-11-27 08:09:10
オリジナル
140 人が閲覧しました

How to Ensure a Single Instance of a Golang Executable Runs on Windows?

Windows での Golang 実行可能ファイルの単一インスタンス実行の確保

実行可能ファイルの複数のインスタンスが同時に実行されるのを防ぐには、グローバル ミューテックス メカニズムを実装します。は不可欠です。 Windows マシン上の Golang でこれを実現するための解決策は次のとおりです。

グローバル ミューテックスの利用:

この解決策には、Windows から CreateMutex 関数を使用してグローバル ミューテックスを作成することが含まれます。カーネル。グローバル ミューテックスは、異なるユーザー セッション間でアクセスでき、実行可能ファイルのインスタンスは一度に 1 つだけ実行できます。

コード例:

次の Go コードグローバルを作成する方法を示しますmutex:

import (
    "syscall"
    "unsafe"
)

// CreateMutex creates a global mutex.
func CreateMutex(name string) (uintptr, error) {
    kernel32 := syscall.NewLazyDLL("kernel32.dll")
    procCreateMutex := kernel32.NewProc("CreateMutexW")

    ret, _, err := procCreateMutex.Call(
        0,
        0,
        uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(name))),
    )
    if int(err.(syscall.Errno)) == 0 {
        return ret, nil
    }

    return ret, err
}

// SampleMutexName provides an example of creating a global mutex.
func SampleMutexName() {
    _, err := CreateMutex("Global\MyMutexName")
    if err != nil {
        // Handle error
    }
}
ログイン後にコピー

結論:

グローバル ミューテックスを作成すると、Golang 実行可能ファイルのインスタンスが常に 1 つだけ実行されるようにすることができます。このソリューションは、複数のインスタンスがシステム リソースを不必要に消費することを効果的に防ぎます。

以上がWindows 上で Golang 実行可能ファイルの単一インスタンスを確実に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート