问题
填空题
[说明2]
有两个进程(编号分别为0和1)需要访问同一个共享资源。为了解决竞争条件(race condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个进程访问该共享资源。以下[C程序代码2]给出了一种实现方法。
[C程序代码2]
int flag[2]; /*flaq数组, 初始化为FALSE*/
Enter_Critical_Section (int my_task_id, int other_task_id)
while (flag [other_task_id]==TRUE); /*空循环语句*/
flag[my_task_id]=TRUE;
Exit_Critical_Section (int my_task_id, int other_task_id)
flag[my_task id]=FALSE;
当一个进程要访问临界资源时,就可以调用[C程序代码2]给出的这两个函数。[C程序代码3]给出了进程0的一个例子。
[C程序代码3]
Enter_Critical_Section(0,1) ;
…使用这个资源…
Exit_Critical_Section (0,1) ;
…做其他的事情…
如果将Enterl_Critical_Section()函数中的两条语句互换一下位置,则可能会出现什么情况 请用100字以内的文字简要说明。
答案
参考答案:可能会出现死锁
解析:在“Enter_Critical_Section(int my_task_id,int other_task_id)”函数中,已提示“whiIe(flag[other_task id]==TRUE);”是一条空循环语句。如果将它调到“flag[my_task_id]=TRUE;”语句之后,则将可能导致程序进入死锁状态。