为什么线程execute中加了synchronize就不能并行运行了呢?
两个线程thread1和thread2,
thread1::execute
{
for(int i=0;i <5000; ++i)
Form1-> Memo1-> Lines-> Add(i);
}
thread2::execute
{
for(int i=0; i <5000; ++i)
Form1-> Memo2-> Lines-> Add(i);
}
这样可以并行执行,但如果把for循环放到Show()函数中,然后在execute中用synchronize(Show)就不能并行,要等一个for循环执行完才执行另一个for循环,这是为什么?如何才能解决啊?谢谢了
[解决办法]
Synchronize 是用于线程内独占执行某自程序的
void drowBitmap()
{
.....
}
Synchronize (&drowBitmap);
// 主要用于不能被线程支持的控件的操作,比如 Bitmap 的 Canvas 属性
[解决办法]
Synchronize 是把辅线程嵌入到主线程中执行,也就是两个线程合并成了一个了。
[解决办法]
这样子啊,现在遇到的问题是:我的程序包含主程序和扫描程序,在主程序执行过程中同时执行扫描程序,如果扫描程序扫到外部急停按钮按下,立即停止主程序,该怎么实现呢?
我是建两个线程,一个执行主程序,一个执行扫描,如果是这样的话,因为主程序要不断将数据显示到VCL中,所以要将主程序Main()放到Synchronize()中,这样就会出现上面说的问题,不能并行执行,有什么好办法?
谢谢