在多任务的操作系统或者大型的工程项目中,尽量不使用过多的全局变量,而是使用信号量和消息队列等方式来进行进程间通信。
使用信号量代替全局变量有以下原因:
- 使用全局变量会增加耦合度,降低内聚性,不符合软件设计思想
- 信号量其实就是把全局变量维护到了一个全局数据结构内
- 使用全局变量影响封装性,移植性和可读性
- 使用全局变量会严重降低代码可维护性和稳定性(想象一下维护一个前人留下来的七八百行全局变量会是多么恶心的一件事)
- 信号量和消息队列等可以将任务阻塞,避免抢占CPU(这在RTOS中尤为重要)
但如果是小型项目的话也可以使用全局变量,因为全局变量的同步操作简单,内存地址固定,读写效率高,所以要根据不同的应用场景选择不同的方案。