全局变量往哪儿放?

Rails有乐观锁悲观锁,但是悲观锁它不支持整个table的锁啊
好吧,那就SQL吧:

ActiveRecord::Base.connection.execute("LOCK TABLE XXX WRITE")
ActiveRecord::Base.connection.execute("UNLOCK TABLES")

在Console下试了试,不同进程,可以锁!同步了!
但是,在fastCGI下就是锁不住!

搞一个全局变量,很可行!

ActiveRecord::Base.connection.execute("select get_lock('lock_xxx', 100)")
ActiveRecord::Base.connection.execute("select release_lock('lock_xxx')")

命名lock很好很强大,MySQL里的全局变量啊~,比Lock整个table灵活且性能强大多了
### 全局变量的定义与说明 在C++中,全局变量是在所有函数、类或代码块之外定义的变量。其作用域覆盖整个程序,并且在整个程序的执行过程中保持有效。全局变量通常在文件顶部(函数外部)声明或定义,并可以通过 `extern` 关键字在多个源文件之间共享[^1]。 #### 定义全局变量 全局变量应在单个源文件中定义,以避免重复定义错误。例如: ```cpp // globals.cpp int globalValue = 0; // 全局变量定义 ``` 该变量可以在其他文件中通过 `extern` 声明后访问: ```cpp // main.cpp #include <iostream> extern int globalValue; // 声明全局变量 int main() { std::cout << "Global value: " << globalValue << std::endl; return 0; } ``` #### 使用全局变量 全局变量在整个程序范围内可见,因此可以在任意函数中直接使用和修改。例如: ```cpp #include <iostream> int counter = 0; // 全局变量 void increment() { counter++; } int main() { increment(); std::cout << "Counter: " << counter << std::endl; return 0; } ``` 上述代码中的 `counter` 变量在多个函数中被访问和修改,体现了全局变量的共享特性[^2]。 #### 静态全局变量的作用 使用 `static` 修饰的全局变量仅限于当前编译单元访问,其作用域被限制为定义它的文件。例如: ```cpp // fileA.cpp static int internalCount = 0; void update() { internalCount++; } ``` 在其他文件中无法访问 `internalCount`,即使使用 `extern` 也无法获取其值。这种限制有助于防止命名冲突并提高封装性[^3]。 #### 多文件使用全局变量 为了在多个源文件中使用同一个全局变量,应将 `extern` 声明入头文件中,并在某个源文件中定义该变量: ```cpp // globals.h #ifndef GLOBALS_H #define GLOBALS_H extern int sharedValue; // 声明全局变量 #endif ``` ```cpp // globals.cpp #include "globals.h" int sharedValue = 10; // 定义全局变量 ``` ```cpp // main.cpp #include "globals.h" #include <iostream> int main() { std::cout << "Shared value: " << sharedValue << std::endl; sharedValue = 20; std::cout << "Updated value: " << sharedValue << std::endl; return 0; } ``` 这种方式确保了全局变量在多个文件中的一致性和可访问性[^2]。 #### 注意事项 将全局变量定义在头文件中可能导致多重定义错误。如果多个源文件包含该头文件,则每个文件都会尝试定义该变量,导致链接失败。因此,全局变量应只在 `.cpp` 文件中定义,并通过头文件进行声明[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值