我想知道是否有可能在Linux下使用POSIX线程库实现以下逻辑。
given a mutex
if (I can get the mutex) {
lock the mutex
call fun A
unlcok the mutex
}
else {
call fun B
}
我是Linux下的线程编程新手,所以只需使用伪代码来显示我正在寻找的代码片段的逻辑即可。
我是新手,所以请温柔点。
所以我在我的代码中使用互斥已经有几个星期了。我理解它背后的概念:锁定对某个资源的访问,与其交互(读或写),然后再为其他人解锁它。
我使用的互斥码主要是复制粘贴调整。代码运行,但我仍然试图把我的头围绕着它的内部工作。到目前为止,我一直在结构中使用互斥锁结构。今天我发现了,这让我完全不知道互斥锁到底锁了什么。下面是示例代码的一部分:
var state = make(map[int]int)
var mutex = &sync.Mutex{}
var readOps uint64
var writeOps uint64
// Here we start 10
我希望在共享库中初始化一个复杂变量,但只初始化一次。之后,我想与使用这个lib的所有进程共享现在初始化的变量。
示例
,假设库名为libgetx.so,它具有函数
- `int get_variable_x()` - which returns the value of a variable called `x`.
- `init_x(5)` - which is initializing `x`
我想只插入一次config-file. (可能在加载库时)--想象一些代价高昂的东西,比如解析一个
现在,每次从链接到共享库的进程调用时,我都希望能够读出x。但是没有再次初始化它(因为它已经在另一个