首页 > 试题广场 >

POSIX线程中如果数据被其他线程修改,则应把数据声明为:(

[单选题]
POSIX线程中如果数据被其他线程修改,则应把数据声明为:(      )
  • const
  • private
  • public
  • volatile
volatile是一个类型修饰符(type specifier)作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。
volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。
根据题意,数据可以被其他线程修改,而要不出错的达到这样的要求,就可以使用volatile修饰这个变量。
发表于 2019-09-05 10:55:45 回复(1)
Volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
发表于 2019-11-01 18:18:50 回复(0)
懒羊羊说:
在POSIX线程中,如果数据可能被其他线程修改,使用volatile关键字可以确保对该数据的访问是原子的,并且防止编译器对该数据的优化。
发表于 2023-06-13 14:17:36 回复(2)

volatile告诉编译器,变量的值可能在执行过程中被其他进程修改,告诉编译器不要优化该变量的值,不要从缓存中读取该变量的值,而每次都要从内存中直接读取该变量的值

发表于 2024-01-24 16:02:30 回复(0)