A multithreaded web server wishes to keep track of the numbe

A multithreaded web server wishes to keep track of the number of requests it services (known as hits.) Consider the following two strategies to prevent a race condition on the variable hits. The first strategy is to use a basic mutex lock when updating hits:

int hits;

mutex lock hit lock;

hit lock.acquire();

hit lock.release();

A second strategy is to use an atomic integer:

atomic t hits;

atomic inc(&hits);

Explain which of these two strategies is more efficient.

Solution

First Method

int hits;

mutex lock hit lock;

hit lock.acquire();

hit lock.release();

System call is required for lock and it will put a process to sleep. So, it requires context switching. If the lock is unavailable.

The process awakening will also require another subsequent context switch.

Second Method

atomic t hits;

atomic inc(&hits);

Atomic update of hits variables are provided by atomic integer.

It also ensures no race condition on hits.

No kernel intervention is need in this case.

Therefore the second method is more efficient than the first one.

A multithreaded web server wishes to keep track of the number of requests it services (known as hits.) Consider the following two strategies to prevent a race c

Get Help Now

Submit a Take Down Notice

Tutor
Tutor: Dr Jack
Most rated tutor on our site