您现在的位置: 主页 > 嵌入式操作系统 > Linux > C语言程序监控变量的变化
本文所属标签:
#C语言#   
为本文创立个标签吧:

C语言程序监控变量的变化

来源:网络整理 网络用户发布,如有版权联系网管删除 2018-08-03 

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

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

#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 == %dn",n);

}

void* scanThread(void *arg)

{

printf("createdn");

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;

}



              查看评论 回复



嵌入式交流网主页 > 嵌入式操作系统 > Linux > C语言程序监控变量的变化
 一个 函数 变量

"C语言程序监控变量的变化"的相关文章

网站地图

围观()