我想在先发制人的线程调度环境中编写并行程序,我可以使用互斥(总是初始化为不接受的二进制互斥)、等待指令以及线程协作指令(对线程中的另一个任务产生)来同步线程,但是没有任何可用的信号量机制(实际上,我正在用NXC编程语言编写Lego Mindstorm的程序)。
有任何方法可以用两个线程A和B来编写程序并生成类似于(A、B.)的执行顺序吗?就像有一个线程包含一个调用两个函数A()和B()的循环,但是在这里,它是以多线程的方式进行的。
如果我有信号量,我想我会这样做:
semaphore SemA = 1, SemB=0;
//in A
{
while(true)
{
down(SemA);
//Do the things
up(SemB);
}
}
//in B
{
while(true)
{
down(SemB);
//Do the things
up(SemA);
}
}发布于 2012-10-17 21:08:21
不确定它是否能工作,但您可以尝试使用单个互斥和Yield函数。如果A和B是唯一的两个任务,我想它总是会按预期从一个切换到另一个,但是我不能测试,因为我已经没有NXT了。
mutex sync;
//in A
{
while(true)
{
Acquire(sync);
//Do the things
Release(sync);
Yield();
}
}
//in B
{
while(true)
{
Acquire(sync);
//Do the things
Release(sync);
Yield();
}
}https://stackoverflow.com/questions/12352409
复制相似问题