首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在NXC中控制线程的执行顺序?

如何在NXC中控制线程的执行顺序?
EN

Stack Overflow用户
提问于 2012-09-10 13:08:16
回答 1查看 620关注 0票数 1

我想在先发制人的线程调度环境中编写并行程序,我可以使用互斥(总是初始化为不接受的二进制互斥)、等待指令以及线程协作指令(对线程中的另一个任务产生)来同步线程,但是没有任何可用的信号量机制(实际上,我正在用NXC编程语言编写Lego Mindstorm的程序)。

有任何方法可以用两个线程A和B来编写程序并生成类似于(A、B.)的执行顺序吗?就像有一个线程包含一个调用两个函数A()和B()的循环,但是在这里,它是以多线程的方式进行的。

如果我有信号量,我想我会这样做:

代码语言:javascript
复制
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);
    }
 }
EN

回答 1

Stack Overflow用户

发布于 2012-10-17 21:08:21

不确定它是否能工作,但您可以尝试使用单个互斥和Yield函数。如果A和B是唯一的两个任务,我想它总是会按预期从一个切换到另一个,但是我不能测试,因为我已经没有NXT了。

代码语言:javascript
复制
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();
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12352409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档