haitao:
已经是:一系列显示信息,多个线程负责更新这些信息,一个线程定时拿它们去显示
[阅读: 482] 2005-01-12 15:14:32
但没作同步
现在的问题可能出在多个线程同时更新这些信息,之间有冲突
还有那个显示的线程也可能与那些更新的线程有冲突
显示信息结构是:x,y坐标,更新标志,string内容
频繁更新的是:更新标志,string内容
还一个更危险的地方是滚动,滚动区域共n行(即n个显示信息结构)
每次更新,前n-1个显示信息结构的string内容依次去下一行来更新自己,置更新标志
拿新的信息更新到第n个显示信息结构的string内容
显示线程没100ms去检查所有的显示信息结构,如果更新标志为1则在x,y位置显示string内容
(原来,基本上每个线程都修改自己对应的显示信息结构,井水不犯河水,
只有一个状态行显示信息结构是大家都可能要修改的
所以已经相当稳定
现在各自的状态字符串变成了一个字符,位于同一个显示信息结构
而滚动区更是大家都来更新,而且一更新就要循环更新所有
冲突的机会就大多了
)
考虑1:
每个通讯线程自己维护一个状态字符,一个自己产生的待显示的滚动信息队列
显示线程定时把它们取出来,显示
考虑2:
作一个可靠的方法让通讯线程告知状态、加入它需要发布的滚动信息