全局变量问题求助
时间:2011-09-26
来源:互联网
问题大致如下:
有一个链表, 两个线程。 链表的起始地址存放在一个全局标量中。 两个线程,线程一不定期的向链表中添加节点和删除节点,线程二每隔5分钟去遍历一下这个链表,遍历完后将这个链表清空。
现在问题就来了,假如线程一和线程二同时操作这个链表该怎么办啊?还有,假如线程二遍历完了链表,正要清空链表, 这时线程一要向链表中添加节点该咋办啊?
群里的高手们能不能给一个简单可行的解决方案啊? 尽量说的详细点,不要只说个用互斥锁、条件变量等来实现, 这个谁都会说的。
有一个链表, 两个线程。 链表的起始地址存放在一个全局标量中。 两个线程,线程一不定期的向链表中添加节点和删除节点,线程二每隔5分钟去遍历一下这个链表,遍历完后将这个链表清空。
现在问题就来了,假如线程一和线程二同时操作这个链表该怎么办啊?还有,假如线程二遍历完了链表,正要清空链表, 这时线程一要向链表中添加节点该咋办啊?
群里的高手们能不能给一个简单可行的解决方案啊? 尽量说的详细点,不要只说个用互斥锁、条件变量等来实现, 这个谁都会说的。
作者: linux_6 发布时间: 2011-09-26
互斥量(或者无名信号量也行) s 初值为1
thread1
sem_wait( &s )
向链表中添加节点和删除节点
sem_post( &s );
thread2
sem_wait( &s )
遍历链表,遍历完后将这个链表清空
sem_post( &s )
这样每次只有1个人在做,保证互斥。
thread1
sem_wait( &s )
向链表中添加节点和删除节点
sem_post( &s );
thread2
sem_wait( &s )
遍历链表,遍历完后将这个链表清空
sem_post( &s )
这样每次只有1个人在做,保证互斥。
作者: DIE654456 发布时间: 2011-09-26
Linux 读写锁
http://blog.csdn.net/dai_weitao/article/details/1752843
http://blog.csdn.net/dai_weitao/article/details/1752843
作者: zmlovelx 发布时间: 2011-09-26
引用 1 楼 die654456 的回复:
互斥量(或者无名信号量也行) s 初值为1
thread1
sem_wait( &s )
向链表中添加节点和删除节点
sem_post( &s );
thread2
sem_wait( &s )
遍历链表,遍历完后将这个链表清空
sem_post( &s )
这样每次只有1个人在做,保证互斥。
互斥量(或者无名信号量也行) s 初值为1
thread1
sem_wait( &s )
向链表中添加节点和删除节点
sem_post( &s );
thread2
sem_wait( &s )
遍历链表,遍历完后将这个链表清空
sem_post( &s )
这样每次只有1个人在做,保证互斥。
噢, 这个是信号量来实现的吧? 请问一下它和mutex互斥锁有何区别啊? 我看了一下好像没有什么区别,用锁的话就是lock和unlock, 这个换成了sem_wait和sem_post,好像没有什么区别。
作者: linux_6 发布时间: 2011-09-26
引用 3 楼 linux_6 的回复:
引用 1 楼 die654456 的回复:
互斥量(或者无名信号量也行) s 初值为1
thread1
sem_wait( &s )
向链表中添加节点和删除节点
sem_post( &s );
thread2
sem_wait( &s )
遍历链表,遍历完后将这个链表清空
sem_post( &s )
……
引用 1 楼 die654456 的回复:
互斥量(或者无名信号量也行) s 初值为1
thread1
sem_wait( &s )
向链表中添加节点和删除节点
sem_post( &s );
thread2
sem_wait( &s )
遍历链表,遍历完后将这个链表清空
sem_post( &s )
……
信号量与互斥锁是有区别的。
信号量初始值如果是1 那么与互斥锁就没什么区别, 如果大于1,就不一样了。
作者: zmlovelx 发布时间: 2011-09-26
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28