QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1678|回复: 0

条件变量不能实现阻塞

[复制链接]
发表于 2006-12-20 14:06:37 | 显示全部楼层 |阅读模式
我在uClinux的应用程序代码中使用了条件变量及互斥锁
首先定义了:
pthread_cond_t proc_cond;
pthread_mutex_t proc_mutex;

在main函数开始部分初始化了这两个东西:
pthread_mutex_init(&proc_mutex, NULL);
pthread_cond_init(&proc_cond, NULL);

在线程内部使用条件变量阻塞线程

printf("procmanageThread pthread_mutex_lock return %d\n",pthread_mutex_lock(&proc_mutex));
pthread_cond_wait(&proc_cond, &proc_mutex);
printf("procmanageThread proc_cond applied\n");
pthread_mutex_unlock(&proc_mutex);


在程序执行一段时间后,按ctrl+c,释放条件变量
pthread_cond_signal(&proc_cond);
后面结束我的子线程
ret = pthread_cancel(proc1ThreadID);

所有的代码在虚拟机上正常运行,按ctrl+c之前,程序一直在子线程内部反复执行,一直到释放了条件变量后,线程结束,程序结束

我把代码移到smart2200开发板后,发现我的条件变量不能实现阻塞,程序执行到pthread_cond_wait后,就直接执行下来了,我的子线程也就杀死了,无法得到执行,请教高手什么原因
您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 04:35 , Processed in 0.038103 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表