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

    作者:课课家教育更新于: 2015-12-08 14:00:47

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

      前几天有一个朋友有一个需求:在一个变量的时候,能够自动执行一个回调函数.做一个类似监控变量的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;

      }

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

C语言 更多推荐

课课家教育

未登录

1