|
悬赏15乐币已解决
最近学习NXC碰到了个问题,就是无法实现多任务的并行执行,好不容易找到个多任务的程序,却不能完全看懂,麻烦各位大神给我解释下行不?最好是在程序每行后面加上注释(当然,像前进后退、传感器之类的就不用了),谢谢
mutex moveMutex;
task move_square()
{
while(true)
{
Acquire(moveMutex);
OnFwd(OUT_BC,100);Wait(1000);
Release(moveMutex);
}
}
task check_sensor()
{
while(true)
{
if(SENSOR_1==1)
{
Acquire(moveMutex);
OnRev(OUT_BC,100);Wait(1000);
Release(moveMutex);
}
}
}
task main()
{
Precedes(move_square,check_sensor);
SetSensorTouch(IN_1);
}
|
最佳答案
查看完整内容
mutex moveMutex / 定义互斥变量
task move_square() / 方形移动子任务
task check_sensor() / 传感器检查子任务
task main() / 主任务
Acquire(moveMutex) / 获取互斥变量
Release(moveMutex) / 释放互斥变量
Precedes(move_square,check_sensor) / 任务优先级:先方形移动,次传感器检查
使用互斥变量主要是为了让多个子任务在不同条件下有效控制伺服器,否则会出现并发控制而造成程序出错。楼主可以参看教程的第十章。 ...
|