首页
社区
课程
招聘
[求助]求助链表读写问题
发表于: 2013-9-27 01:08 4891

[求助]求助链表读写问题

2013-9-27 01:08
4891
假设某程序创建了一个链表A,然后这个程序设置了三个timer,timer的周期都是5秒,每个timer都会对链表A进行读写操作,请问这种情况下是否会发生冲突?需不需要像多线程那样做互斥操作?

我试过使用InitializeCriticalSection,但是测试结果是: CriticalSection只能用在多线程中,这个程序没有用到多线程,只是在同一个线程中有5个timer,所以CriticalSection起不到作用.

有些人的说法是,这5个timer都是在同一线程中,相当于5个函数,而同一线程中多个函数中的代码执行是有一定顺序的,即使是timer,也一样,所以不可能发生多个函数同时读写链表的可能,不需要做互斥操作.

另外,单线程中CriticalSection起不到作用,那如果想在单线程中做互斥操作,该用什么api呢?

小弟初学编程不久,请教有过相关经验的前辈!谢谢!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 80
活跃值: (227)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你朋友说的没错,单线程根本不要互斥!一个时间点内只能有一个timer触发!
2013-9-27 01:33
0
雪    币: 257
活跃值: (67)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
只要timer都在一条线程里面就没有问题
2013-9-27 01:36
0
雪    币: 80
活跃值: (227)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
准确的说timer应该是存在于主线程里面的!也就是说只在主线程触发!
2013-9-27 01:39
0
雪    币: 49
活跃值: (19)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个不大清楚
但是完全可以动手一试
比如打印下当前线程
而且在一个TIMER触发的函数SLEEP 5秒以上  
完全可以从结果得出自己的结论

求人不如求己啊

另外单线程互斥干嘛
好比你上午背着书包去仔细 晚上背着书包回教室 又没人抢你的
不是足球 一场比赛 多少人抢着踢
2013-9-27 16:45
0
游客
登录 | 注册 方可回帖
返回
//