在多线程环境中变量可以是静态的还是易失的

问题描述 投票:0回答:1

我正在为我的应用程序设置两个线程,并且我声明了一个名为x的变量,该变量将从一个线程获取输入,并在另一个线程中用于执行功能,因为该变量随时可能更改,我相信它必须是易变的,它也必须是全球性的。在这种情况下,我可以将变量声明为静态volatile x吗?

如果是,有人可以对此有所了解吗?

c multithreading thread-safety race-condition
1个回答
2
投票

它们是不同的概念:

  • static提供链接信息。它使得变量或函数仅对当前编译单元(源文件)是已知的。该名称将不在目标文件中。

  • volatile告诉编译器,变量的值可能因外部来源或事件而改变。例如,在发生中断时由中断服务程序设置的标志。结果,将禁用某些假定变量值不变的编译器优化。

因此,在多线程环境中,变量可以是静态的也可以是易失的。

© www.soinside.com 2019 - 2024. All rights reserved.