我希望在共享库中初始化一个复杂变量,但只初始化一次。之后,我想与使用这个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。但是没有再次初始化它(因为它已经在另一个
我在Linux操作系统上的应用程序中有4个pthread。
SIGTERM在3个线程中被阻塞,并且在信号处理函数中只有一个线程处理。我认为下面的代码是安全的,因为互斥是在信号处理函数中本地创建的,主要用于将对共享数据变量的更改推送到另一个线程,该线程需要基于该变量执行某些操作。
我的理解正确吗?
void sig_handler_sigterm()
{
mutex * m = new mutex;
mutex_lock(m);
//update shared data, the change needs to reflect in another thread