Answer:
int sumid=0; /* Shared var that contains the sum of the process ids currently accessing the file */
int waiting=0; /* Number of process waiting on the semaphore OkToAccess */
semaphore mutex=1; /* Our good old Semaphore variable ;) */
semaphore OKToAccess=0; /* The synchronization semaphore */
get_access(int id)
{
sem_wait(mutex);
while(sumid+id > n) {
waiting++;
sem_signal(mutex);
sem_wait(OKToAccess);
sem_wait(mutex);
}
sumid += id;
sem_signal(mutex);
}
release_access(int id)
{
int i;
sem_wait(mutex);
sumid -= id;
for (i=0; i < waiting;++i) {
sem_signal(OKToAccess);
}
waiting = 0;
sem_signal(mutex);
}
main()
{
get_access(id);
do_stuff();
release_access(id);
}
Some points to note about the solution:
release_access wakes up all waiting processes. It is NOT ok to wake up the first waiting process in this problem --- that process may have too large a value of id. Also, more than one process may be eligible to go in (if those processes have small ids) when one process releases access.
woken up processes try to see if they can get in. If not, they go back to sleep.
waiting is set to 0 in release_access after the for loop. That avoids unnecessary signals from subsequent release_accesses. Those signals would not make the solution wrong, just less efficient as processes will be woken up unnecessarily.
Maybe true,or maybe false,you never know.
Answer:
Following are the definition of function
double averager (const double &x) // function definition
{
static double z = 0.0; // variable declaration
static size_t c = 0;
c=c+1; // increment of c by 1
z =z+ x; // adding value
return z /c ; // return average
}
Explanation:
Following are the description of statement
- Create a function averager of double type that holds a parameter "x" of the double type .
- In this function we declared a variable "z" of a static double type that value is initialized by 0.
- The static variable is used to retain value.
- Declared a variable "c" of size_t type that holds a value 0 .
- After that increment the value of c by 1 .
- adding the value of "z" variable to the "x" and storing the result into the z variable.
- Finally return the average value
Well... it looks too complicated for anyone in the whole universe. :\
Answer:
There are two ways to insert the new column or row in the table.
Explanation:
<u>Method I</u>
i. Select the cell where you want to add a new row or column,
ii. Click on Home Tab
iii. Find insert button in Cells Group.
iv. Click on Insert Row or Insert Column button.
By following above mentioned steps we can add a row or column in Excel sheet.
<u>Method II</u>
i. Select the cell where you want to add a new row or column,
ii. Right Click on the selected Cell.
iii. Find Insert Button in drop down menu and Click on Insert.
iv. There are four options in POP menu, choose Entire Row or Entire Column to insert row or column.