问题 填空题

[说明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;”语句之后,则将可能导致程序进入死锁状态。

多项选择题
单项选择题