下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

C语言程序监控变量的变化:不看后悔

作者:课课家教育     来源: http://www.kokojia.com点击数:2117发布时间: 2015-12-08 14:00:47

标签: 编程语言C语言程序监控

大神带你学编程,欢迎选课

  前几天有一个朋友有一个需求:在一个变量的时候,能够自动执行一个回调函数.做一个类似监控变量的demo。

  后来就小写一个C语言程序监控变量变化的demo,特以此分享一下,作为以后备用。

C语言程序监控变量的变化:不看后悔_编程语言_C语言_程序监控

  #include

  #include

  #include

  #include

  int g_var = 0;

  //用以标识是否已经改变的条件变量

  pthread_cond_t has_changed = PTHREAD_COND_INITIALIZER;

  //条件变量需要配套的互斥锁

  pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;

  //该函数模拟你说的侦测到变量改变需要调用的函数

  void func(int n)

  {

  printf("var changed == %d\\n",n);

  }

  void* scanThread(void *arg)

  {

  printf("created\\n");

  int *pNumber = (int *)arg;

  int lastNumber = *pNumber;

  while(1)

  {

  while(lastNumber == *pNumber )

  pthread_cond_wait(&has_changed,&lock);

  func(lastNumber = *pNumber);

  }

  return NULL;

  }

  int main()

  {

  pthread_t scanthreadid;

  pthread_create(&scanthreadid,NULL,scanThread,(void *)&g_var);

  srand(time(NULL));

  for(;;)

  {

  //模拟真实情况 随机的时间来修改g_var的值 然后修改成随机的值

  sleep(rand()%5+1);

  g_var = rand()%1000;

  printf("moding ==%d \\n",g_var);

  pthread_cond_signal(&has_changed);

  //

  }

  //回收子线程

  pthread_join(scanthreadid,NULL);

  //清除资源

  pthread_mutex_destroy(&lock);

  pthread_cond_destroy(&has_changed);

  return 0;

  }

  看完小编的文章是不是很精彩,是不是想要成为编程语言的高手,更多关于在线教育的文章尽在课课家,希望你们多多关注。

赞(0)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程