有2个任务(编号为0和1)互斥机制的代码如下:
int flag[2];/*flag数组,初始化为FALSE*/
Enter_Critical_Section(int my_tast_id,int other_task_id)
{
while (flag[other_task_id] == TURE);
flag[my_task_id] = TRUE;
}
Exit_Critical_Section(int my_task_id,int other_task_id)
{
flag[my_task_id] = FALSE;
}
当一个任务要访问临界资源时,可以调用上述2个函数,比如任务0的代码可以如下:
Enter_Critical_Section(0,1);
...使用该资源...
Exit_Critical_Section(0,1);
...做其它事情...
如果是任务1要访问临界资源,代码是不是改成这样:
Enter_Critical_Section(1,0);
...使用该资源...
Exit_Critical_Section(1,0);
...做其它事情... |