Introduction
Volatile modifier is use to reduce
concurrency issues of executing threads. Volatile apply for reference
type, pointer type , enum type with an integral base type and integral type
such as sbyte, sort, usort, int, unit, char, float, and bool. Volatile
modifier does not force synchronization of load and store, it means volatile
does not work as a lock statement. Volatile modifier provides a way for you
to restrict the optimizations the compiler makes regarding loads and stores
into the field. You will typically use volatile in multithreaded programs
and with flag variables. A read and write to a volatile field is always done
after all other memory accesses, which precede in the instruction sequence.
Example
using
System;
using
System.Threading;
namespace
volatile_statement_in_c_sharp
{
public
class
A
//Create class
{
string show;
//create state
variable, which type of string
public
volatile
bool flage;
//create volatile
field
public
void set_volatile()
//create function
{
show = "Dot net Heven";
//set
value of string
flage = true;
Thread.Sleep(300);
//sleep thread 300
milliseconds
check_volatile();
//call check
volatile() function
}
public
void check_volatile()
{
if (flage)
// check falge's
value
{
Console.WriteLine(show);
Console.WriteLine("Flage
is:{0}", flage);
}
}
}
class
Program
{
static
void Main(string[]
args)
{
A obj =
new
A();
//create object of
class A
ThreadStart
th = new
ThreadStart(obj.set_volatile);
//create thread
new
Thread(th).Start();
//start thread
Console.ReadLine();
}
}
}
Output: