线程A:
TA.Execute;
begin
while(true) do
Synchronize(TestA)
end;
TA.TestA
begin
MainUnit.Demo1(); {此函数在主程序中,里面有好多代码,其中也调用主程序的其它函数,主程序的很多全局变量等等}end;线程B:
TB.Execute;
begin
while(true) do
Synchronize(TestB)
end;
TB.TestB
begin
MainUnit.Demo2(); {此函数在主程序中,里面有好多代码,其中也调用主程序的其它函数,主程序的很多全局变量等等}end;demo1和demo2这两个函数里面的代码已经设计了避免同时修改某一全局变量。因为主程序有太多的东西无法传到线程中去,所以就如上那样做了。
请问这样设计会不会出问题?虽然不是很规范,但有没有犯了大忌?
请有经验的朋友指点一下,多谢!
解决方案 »
- 请问大家有知道做超市系统软件的公司的联系方式吗?(广州,海南)
- 动态数组
- 方便交流学习,我给大家开一个FTP。带宽10mb,暂时80gb
- 我在datamodule里放了一个StoredProc,在AfterScroll事件里想清空某一个窗体的edit和combobox,该怎样写呢?
- 求肋,怎样使Edit文本框内只允许输入数字????
- 高分求够TAdvGrid源码
- 请问如何得到系统数据源名和ODBC里数据库的驱动程序?
- 哪位有修改好的modlink for xe5 啊?
- 在delphi中,怎么向数据库加入图像数据?
- 自制组件的问题!(TPropertyEditor)
- 菜鸟的一个问题:Delphi 哪个版本比较好用?
- ADODataSet+ADOConnection+TDataSource+TClientDataSet+TDataSetProvider+DBgrid的问题
不知道楼主在demo1和demo2中的代码是否用了VCL中的东西(因为VCL本身是线程不安全的),如果没有,那可以将Synchronize去掉,没必要都到主线程中执行. 如果有,那么,为了提高效率,重新设计DEmo函数,将不用VCL的部分搞出来放在附属线程中.
那个Synchronize在这个地方是画蛇添足呀。我没有用到vcl.
去掉Synchronize的话,是否合理?
为什么要调用主程序的函数呢?因为这些函数用到了主程序的很多变量。
请大侠们多发表意见!