fshunj 发表于 2013-12-2 21:58:47

请教 如何用ucos 实现 pthread 的同步变量操作.

条件变量
   
条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。

下面是个简单的例子:
第一个函数表示等待一个条件的满足,第二个是在满足条件时发一个信号给给等待的线程。
通常互斥变量和条件变量是一起使用的。我们使用第一个函数等待一个条件变为真,这个函数要指定一个条件变量地址的同时还要指定一个互斥变量的地址。
    consume()
    {
      lock(mutex);
      while(false)
            pthread_cond_wait(cond, mutex);
      unlock(mutex);
    }
    produce()
    {
      lock(mutex);
      if (some_one_waiting)
            pthread_cond_signal(cond);
      unlock(mutex);
    }

myflyer 发表于 2013-12-11 23:53:16

当年想这个问题好久,最后发现只有eCos提供这个功能,结果给ucos增加了一个系统服务
页: [1]
查看完整版本: 请教 如何用ucos 实现 pthread 的同步变量操作.