任务线程访问vcl不使用synchronize方法而直接使用
TCriticalSection.Enter;
dbgrid1.datasource:=ds;
TCriticalSection.Leave这样行么?
TCriticalSection.Enter;
dbgrid1.datasource:=ds;
TCriticalSection.Leave这样行么?
解决方案 »
- fastreport中这样的分栏分组效果怎么做
- 问个小函数,送分
- sleep、sleepex函数的问题
- 存取地址错误?
- 那位仁兄能提供一个Delphi7的CDKEY?我急用!!!!!!!!!!!!!!!!!!!!!!
- 怎么Jpeg1 : TJPEGIMAGE;变量定义通不过
- delphi作的程序,2000下编译的,到了98运行结果全都变了,打印只能预览,不能输出,排好的表格乱七八糟~~重写不可能,怎么办?
- 急!有关TDateTimePicker和系统消息的问题
- 巨难的问题!!!
- ontimer和其他事件是不是并行的?
- FastReport 为什么图片大于2.22MB时,会出现JPEG ERROR #53?
- 库存成本算法(提提建议)
如果synchronize用多了,
如果任务线程多的话就跟没有使用多线程一样,
因为所有的任务线程都是等待主线程来执行。
如果是使用TCriticalSection来实现,
因为任务线程锁着的资源相同的,则各个任务线程排队使用资源
如果任务线程锁着的资源不同的,则不用排队就执行起来了。如果所有的任务线程使用synchronize来实现,
则所有任务线程排队由主线程来一个一个执行,
这个情况多的话就跟没用多线程一样。
synchronize是交给主线程去执行,任务线程多的话效果不好