有这样一个结构体
Tgrppic = record
size: integer;
data: array of byte;
end;var grppic: array of Tgrppic;data储存的是一定格式的图片信息(RLE8格式),然后在新线程里面把数据按格式画到内存中一个Tbitmap上面,可是同一段代码多线程执行时会出错,而单线程则不会。想向各位高手大侠请教一下,关于delphi线程同步的问题。如何才能使读到的数据不错误???求解~~
Tgrppic = record
size: integer;
data: array of byte;
end;var grppic: array of Tgrppic;data储存的是一定格式的图片信息(RLE8格式),然后在新线程里面把数据按格式画到内存中一个Tbitmap上面,可是同一段代码多线程执行时会出错,而单线程则不会。想向各位高手大侠请教一下,关于delphi线程同步的问题。如何才能使读到的数据不错误???求解~~
解决方案 »
- 求助
- 操作数据库是用ADO好还是dbExpress好???
- delphi怎么跟踪到系统单元中去呢?
- 很急!!哪位大虾帮帮小弟,问题解决马上给分!!
- 帮帮我吧!!!
- 请问有没有可以替换TRichEdit的控件,我发现TRichEdit有问题!!!
- 请问如何删除一个表中的重复记录?
- 我想完成这样一件事,请问该怎么做?
- 想按Esc键关闭当前模式窗口!如何做?
- 各位大哥谁能帮帮我:我用CB的QuickRep做打印,打印机用的映美 lq-300kii针式打印机,纸的高度为27.9cm,宽度为24.2cm,当我连续打印时,从第二
- 哪位大侠能否写个 uThreadPool线程池应用的Demo。
- DefaultHandler可以用来拦截消息?
另外要保证每个线程使用该tbitmap的时候其它线程不会也在访问他,所以使用临界区即可,Lz可以参看百度万一的博客,里面有示例的
可以参考
http://www.cnblogs.com/del/category/174761.html
进程不能访问其他进程的内存,一个进程中所有线程共享资源,跨线程访问内存在C#里存在线程保机制时会报错
因为最近在用C#搞混了,抱歉
临界区(其中包含了Synchronize)
http://www.cnblogs.com/del/archive/2009/02/12/1389368.html
互斥
http://www.cnblogs.com/del/archive/2009/02/13/1390295.html
信号量
http://www.cnblogs.com/del/archive/2009/02/14/1390747.html
声明:
var CS: TRTLCriticalSection;
初始化,可在窗体Show时初始化
InitializeCriticalSection(CS); {初始化}
线程中
EnterCriticalSection(CS); //进行临界区
...
synchronize(过程);
...
LeaveCriticalSection(CS); //离开临界区
或者 TRTLCriticalSection
应该可以实现