社区
C语言
帖子详情
线程安全型队列的实现
Rice1210
2011-11-28 07:39:39
老师要求编写一个线程安全的队列,所谓线程安全,就是该队列能够实现多个线程同时正确的增删改队列结点,也就是能够实现对队列这个临界资源的保护。
完成该队列后,自己编写一个测试程序,生成多个线程同时读写该队列,验证你的队列执行是否正确,并给出测试报告。
自己不会编求各位大侠帮助啊。。
...全文
295
6
打赏
收藏
线程安全型队列的实现
老师要求编写一个线程安全的队列,所谓线程安全,就是该队列能够实现多个线程同时正确的增删改队列结点,也就是能够实现对队列这个临界资源的保护。 完成该队列后,自己编写一个测试程序,生成多个线程同时读写该队列,验证你的队列执行是否正确,并给出测试报告。 自己不会编求各位大侠帮助啊。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Rice1210
2011-12-07
打赏
举报
回复
[Quote=引用 5 楼 wshjldaxiong 的回复:]
引用 1 楼 jjwu_hdu 的回复:
内部用一个list存放资源
然后用一个互斥和一个条件变量,线程同步最资源的操作
对外接口两个就够了
一个push()
一个pop()
1楼其实已经说得很明白,再具体一点就是。
首先,你这个队列写好了之后要严格执行一点:任何一个线程都绝对不能直接操作这个队列,想要增删节点一定要通过你写的函数来进行,可以把这两个函数命名为push()和po……
[/Quote]
我只能说我实在太弱了。。看不明白,,自己写不出程序代码。。
我自己写不来代码,,有没有直接写好的代码。。
小默
2011-12-02
打赏
举报
回复
[Quote=引用 1 楼 jjwu_hdu 的回复:]
内部用一个list存放资源
然后用一个互斥和一个条件变量,线程同步最资源的操作
对外接口两个就够了
一个push()
一个pop()
[/Quote]
1楼其实已经说得很明白,再具体一点就是。
首先,你这个队列写好了之后要严格执行一点:任何一个线程都绝对不能直接操作这个队列,想要增删节点一定要通过你写的函数来进行,可以把这两个函数命名为push()和pop(),一个负责增一个负责删。
在这两个函数中,一定要使用互斥机制(这个方式可以多种,4楼已经给出了一种),那么就能保证同一时间只有一个线程在执行该函数,其他线程必须等待,这样一来就能保证多个线程就能正确的增删节点了。
你要求中的“同时”其实只是感觉上的同时,因为线程的切换会很快,你感觉不出先后,而实际上的同时却是不可能的,也是不应该实现的。
互斥机制不了解的话,请自行百度。
qq120848369
2011-12-02
打赏
举报
回复
lock;
op;
unlock;
caddor
2011-12-02
打赏
举报
回复
对队列 对写 , 容易
网上很多 类似代码
如果用 c++ std::queue
队列都不用你写了
Rice1210
2011-12-02
打赏
举报
回复
[Quote=引用 1 楼 jjwu_hdu 的回复:]
内部用一个list存放资源
然后用一个互斥和一个条件变量,线程同步最资源的操作
对外接口两个就够了
一个push()
一个pop()
[/Quote]
太抽象了。。能不能具体点啊。。
给点代码程序什么的。。
jjwu_hdu
2011-11-28
打赏
举报
回复
内部用一个list存放资源
然后用一个互斥和一个条件变量,线程同步最资源的操作
对外接口两个就够了
一个push()
一个pop()
JAVA多线程精讲下
线程的同步(
线程安全
问题)l 线程的死锁l 线程间通信l 线程组l 线程池l 多线程的第三种
实现
方案l 匿名内部类方式使用多线程l 定时器的使用l 多线程面试题
Qt QQueue 安全的多线程
队列
、阻塞
队列
public ://唤醒等待
队列
中的一个线程(来自wait) } T take() {这个 BlockingQueue类使用QMutex和QWaitCondition来保证
线程安全
,并
实现
了put、take、isEmpty和size等方法。其中,put方法用于往
队列
中插入元素,take方法用于从
队列
中取出元素,isEmpty方法用于判断
队列
是否为空,size方法用于获取
队列
中元素的数量。
Linux多线程系列-2-条件变量的使用(
线程安全
队列
的
实现
)
多线程情况下,往往需要使用互斥变量来
实现
线程间的同步,
实现
资源正确共享。 linux下使用如下变量和函数 //条件变量 pthread_cond_t int pthread_cond_init (pthread_cond_t *c, const pthread_condattr_t *a) int pthread_cond_wait (pthread_cond_t *c, pthread_mu
多线程
队列
算法优化(双端
队列
)(一
多线程
队列
(Concurrent Queue)的使用场合非常多,高性能服务器中的消息
队列
,并行算法中的Work Stealing等都离不开它。对于一个
队列
来说有两个最主要的动作:添加(enqueue)和删除(dequeue)节点。在一个(或多个)线程在对一个
队列
进行enqueue操作的同时可能会有一个(或多个)线程对这个
队列
进行dequeue操作。因为enqueue和dequeue都是对同一个
队列
无锁数据结构之——
线程安全
的SPSC
队列
1、Lamport提出的无锁SPSC
队列
。在其论文【论文】中证明了,在遵守【顺序一致性】内存模
型
的计算机中,单生产者单消费者(SPSC)先进先出
队列
中的锁是可以去除的,从而得到了一个无锁
队列
,并第一次给出了并发无锁先进先出(Concurrent Lock-free FIFO,CLF)
队列
的
实现
。通过去除
队列
中的锁,生产者、消费者可以并发的访问
队列
,从而提高了系统的并发执行度。一种
实现
:#defin...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章