【发布时间】:2012-09-03 08:41:34
【问题描述】:
我想在抢占式线程调度环境中编写一个并行程序,我可以使用互斥锁(二进制互斥锁,始终初始化为未使用)、等待指令以及线程协作指令(让位于线程中的另一个任务)同步我的线程,但没有任何可用的信号量机制(事实上,我正在为 Lego Mindstorm 使用 NXC 编程语言编写程序)。
有没有什么方法可以编写一个有两个线程A和B的程序,并生成一个执行顺序,比如(A B 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);
}
}
【问题讨论】:
-
您可以使用
priority语句(或者它是编译器指令?)来帮助确定每个进程的优先级。您可以使用“主线程”和一些互斥锁来控制执行哪些线程。 -
另外,请尝试在 Mindboards 论坛上提问。
标签: thread-synchronization nxc