码迷,mamicode.com
首页 > 编程语言 > 详细

OSIP中的多线程宏定义#ifdef OSIP_MT

时间:2014-05-10 04:10:53      阅读:640      评论:0      收藏:0      [点我收藏+]

标签:elements   多线程   

OSIP在定义多线程的时候,需要添加锁,如果没有使用到多线程,就没有使用到锁的功能。

文件代码:osip_fifo.h

/**
 * Structure for referencing a fifo.
 * @var osip_fifo_t
 */
  typedef struct osip_fifo osip_fifo_t;

/**
 * Structure for referencing a fifo.
 * @struct osip_fifo
 */
  struct osip_fifo
  {
#ifdef OSIP_MT
    struct osip_mutex *qislocked;  /**@internal */
    struct osip_sem *qisempty;     /**@internal */
#endif
    osip_list_t queue;             /**< list of nodes containing elements */
    int nb_elt;                    /**< nb of elements */
    osip_fifo_state state;           /**@internal state of the fifo */
  };

文件代码:port_fifo.c

int
osip_fifo_size (osip_fifo_t * ff)
{
  int i;

#ifdef OSIP_MT
  osip_mutex_lock (ff->qislocked);
#endif

  i = osip_list_size (&ff->queue);
#ifdef OSIP_MT
  osip_mutex_unlock (ff->qislocked);
#endif
  return i;
}

从上面的代码可以看出,如果是多线程就需要定义宏,使得多线程访问互斥生效。但是在编写的过程中,会导致所有的函数在访问变量的时候,必须带上宏,然后加锁,然后解锁,对于代码非常的不清爽。

 

OSIP中的多线程宏定义#ifdef OSIP_MT,布布扣,bubuko.com

OSIP中的多线程宏定义#ifdef OSIP_MT

标签:elements   多线程   

原文地址:http://5228690.blog.51cto.com/5218690/1409071

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!