请问如何用多线程实现双缓冲?(200分)

  • 主题发起人 主题发起人 tempc
  • 开始时间 开始时间
T

tempc

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在想在主线程中使用一个Index索引和一个Bitmaps: array[0..1] of TBitmap,
Bitmaps[Index]作为前台的图像需要不断地被画到Form上,同时希望开另外一个线
程,对后台的Bitmaps[1-Index]缓冲进行修改,当修改完毕后,就将
Index := 1 - Index。切换两幅图像,不知道这样的双缓冲实现会不会有问题?
 
要做好同步...用锁或信号灯
 
to timerri:
能否具体一点,有没有合适的demo?
 
主要是锁定的问题
 
去多线程区找,那里多的是讨论
 
用ImageList可能会好一点!!!!
 
采用主线程处理Bitmaps[Index],同时启动线程处理Bitmaps[Index](注意锁定),
住线程处理完看Bitmaps[Index]处理完没有,然后等待,知道处理完,在进行处理,如此循环
 
注意锁定的时机
 
这个问题不存在同步问题:
“同时希望开另外一个线程,对后台的Bitmaps[1-Index]缓冲进行修改,当修改完毕后...”。
请注意,对INDEX的修改是在,“对后台的Bitmaps[1-Index]缓冲进行修改,当修改完毕后”
进行的。对缓Bitmaps[1-Index]的使用不存在冲突,同样的原因,对Bitmaps[Index]的引用
同样不会出现冲突。
不过用一点:“图像需要不断地被画到Form上”,可能存在不必要的操作,缓冲索引
INDEX还没有改变,已经在FORM 上显示的图片又一次被重画了,但是不影响功能。
 
后退
顶部