我希望在共享库中初始化一个复杂变量,但只初始化一次。之后,我想与使用这个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。但是没有再次初始化它(因为它已经在另一个
我有一个线程需要被阻塞,直到另一个线程中发生了什么事情。这听起来很典型,我有这个解决方案。
//thread 1
mux.lock();
//send work to another thread
mux.lock(); //will likely block which I want
//thread 2
//get the work sent over from thread 1
//work on it, then
mux.unlock(); //unblock thread 1 - all good
这看起来在Linux上运行得很好,而且它不需要条件变量--除了C++标准说在同一线程
我想知道是否有可能在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下的线程编程新手,所以只需使用伪代码来显示我正在寻找的代码片段的逻辑即可。