Mjpeg-streamer源码分析(一)

2019-07-13 01:59发布

  Mjpeg-streamer源码分析
     
--------------------------------------------------------------------------------------------------
基础知识:
 条件变量:
  条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:
  一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。
  为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。
  
  当程序进入pthread_cond_wait等待后,将会把g_mutex进行解锁,
  当离开pthread_cond_wait之前,g_mutex会重新加锁。所以在main中的g_mutex会被加锁。
  
 动态链接库的操作函数:
  #include
  void *dlopen(const char *filename, int flag); /* 打开动态链接库,返回动态库句柄handle */
  char *dlerror(void);    /* 返回由于dlopen(),dlsym()或者dlclose()产生的错误 */
  void *dlsym(void *handle, const char *symbol); /* 通过handle,获得动态库内函数的地址,之后通过该地址调用动态库内的函数 */
  int dlclose(void *handle);   /* 关闭动态库 */
  Link with -ldl.     /* 注意,程序在编译的时候要用-ldl */
  
 字符串操作函数:
  #include
  char *strchr(const char *s, int c);  /* 返回字符串s第一次出现c的指针 */
  char *strrchr(const char *s, int c);  /* 返回字符串s最后一次出现c的指针 */
  char *strdup(const char *s);   /* 复制字符串s,返回指向新字符串的指针(mallocfree) */
  char *strndup(const char *s, size_t n);  /* 复制字符串s最多n个字符,如果s正好有n个,'