登录
首页 >  Golang >  Go问答

使用 Golang 创建命名互斥体的方法

来源:stackoverflow

时间:2024-02-06 23:33:16 307浏览 收藏

“纵有疾风来,人生不言弃”,这句话送给正在学习Golang的朋友们,也希望在阅读本文《使用 Golang 创建命名互斥体的方法》后,能够真的帮助到大家。我也会在后续的文章中,陆续更新Golang相关的技术文章,有好的建议欢迎大家在评论留言,非常感谢!

问题内容

我对 golang 相当陌生,正在尝试创建一个命名互斥体。我正在尝试复制:

hMutex = CreateMutex( 
    NULL,                        // default security descriptor
    FALSE,                       // mutex not owned
    TEXT("NameOfMutexObject"));  // object name

我在同步中看到的示例似乎并未说明命名互斥体。


正确答案


这是使用同步的命名互斥体的示例 - 这是您正在寻找的吗?

package main

import (
    "fmt"
    "sync"
)

var mutexMap sync.Map

func createMutex(name string) *sync.Mutex {
    mutex, ok := mutexMap.Load(name)
    if !ok {
        newMutex := &sync.Mutex{}
        mutex, _ = mutexMap.LoadOrStore(name, newMutex)
    }
    return mutex.(*sync.Mutex)
}

func main() {
    hMutex := createMutex("NameOfMutexObject")
    hMutex.Lock()
    fmt.Println("Locked Mutex: NameOfMutexObject")
    hMutex.Unlock()
    fmt.Println("Unlocked Mutex: NameOfMutexObject")
}

今天关于《使用 Golang 创建命名互斥体的方法》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>