Suggested Videos
Part 91 - Retrieving data from Thread function using callback method
Part 92 - Significance of Thread.Join and Thread.IsAlive functions
Part 93 - Protecting shared resources from concurrent access in multithreading
In this video we will discuss, the Difference between Monitor class and lock.
Both Monitor class and lock provides a mechanism that synchronizes access to objects. lock is the shortcut for Monitor.Enter with try and finally.
This means that, the following code
can be rewritten as shown below:
In C# 4, it is implement slightly differently as shown below
So, in short, lock is a shortcut and it's the option for the basic usage. If you need more control to implement advanced multithreading solutions using TryEnter() Wait(), Pulse(), & PulseAll() methods, then the Monitor class is your option.
Part 91 - Retrieving data from Thread function using callback method
Part 92 - Significance of Thread.Join and Thread.IsAlive functions
Part 93 - Protecting shared resources from concurrent access in multithreading
In this video we will discuss, the Difference between Monitor class and lock.
Both Monitor class and lock provides a mechanism that synchronizes access to objects. lock is the shortcut for Monitor.Enter with try and finally.
This means that, the following code
static object _lock = new object();
public static void AddOneMillion()
{
for (int i =
1; i <= 1000000; i++)
{
lock (_lock)
{
Total++;
}
}
}
can be rewritten as shown below:
static object _lock = new object();
public static void AddOneMillion()
{
for (int i =
1; i <= 1000000; i++)
{
// Acquires the exclusive lock
Monitor.Enter(_lock);
try
{
Total++;
}
finally
{
// Releases the exclusive lock
Monitor.Exit(_lock);
}
}
}
In C# 4, it is implement slightly differently as shown below
static object _lock = new object();
public static void AddOneMillion()
{
for (int i =
1; i <= 1000000; i++)
{
bool lockTaken = false;
// Acquires the exclusive lock
Monitor.Enter(_lock, ref
lockTaken);
try
{
Total++;
}
finally
{
// Releases the exclusive lock
if (lockTaken)
Monitor.Exit(_lock);
}
}
}
So, in short, lock is a shortcut and it's the option for the basic usage. If you need more control to implement advanced multithreading solutions using TryEnter() Wait(), Pulse(), & PulseAll() methods, then the Monitor class is your option.
No comments:
Post a Comment
It would be great if you can help share these free resources