>  기사  >  백엔드 개발  >  Windows에서 Golang 실행 파일의 단일 인스턴스가 실행되는지 확인하는 방법은 무엇입니까?

Windows에서 Golang 실행 파일의 단일 인스턴스가 실행되는지 확인하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-27 08:09:10144검색

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

Windows에서 Golang 실행 파일의 단일 인스턴스 실행 보장

실행 파일의 여러 인스턴스가 동시에 실행되는 것을 방지하려면 전역 뮤텍스 메커니즘 구현 필수적입니다. 다음은 Windows 시스템의 Golang에서 이를 달성하기 위한 솔루션입니다.

전역 뮤텍스 활용:

이 솔루션에는 Windows 시스템의 CreateMutex 기능을 사용하여 전역 뮤텍스를 생성하는 것이 포함됩니다. 핵심. 전역 뮤텍스는 여러 사용자 세션에서 액세스할 수 있으므로 한 번에 하나의 실행 파일 인스턴스만 실행할 수 있습니다.

코드 예:

다음 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 실행 파일의 인스턴스 하나만 실행되도록 할 수 있습니다. 이 솔루션은 여러 인스턴스가 시스템 리소스를 불필요하게 소비하는 것을 효과적으로 방지합니다.

위 내용은 Windows에서 Golang 실행 파일의 단일 인스턴스가 실행되는지 확인하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.