W wanggongqin Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-21 #1 如题,我在 TThread 类的派生类中的私有域声明 VCL 组件,如 TIdTCPServer、TIdTCPClient、 TMemoryStream 等,是否需要考虑线程安全问题?还有我在线程类中的某个方法中使用 TBitmap、TCanvas 等局部变量是否考虑线程安全问题?
如题,我在 TThread 类的派生类中的私有域声明 VCL 组件,如 TIdTCPServer、TIdTCPClient、 TMemoryStream 等,是否需要考虑线程安全问题?还有我在线程类中的某个方法中使用 TBitmap、TCanvas 等局部变量是否考虑线程安全问题?
L linuxping Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-21 #2 如果VCL 组件只被本线程使用 它是安全的~也就是说私有域中的 VCL 组件是安全的. TCanvas并不保证线程安全
W wanggongqin Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-22 #3 我记得一些资料上说什么访问公共堆栈什么的会引起线程不安全!!!
C cqwty Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-22 #4 首先,在delphi中,如果是可视化的vcl,那肯定是线程不安全的,访问的时候,需要同步。如果是非可视化的vcl,那么如果只是一个线程使用,那这个线程没有什么不安全的,如果涉及到多个线程访问,那不管是vc写的多线程,还是其他语言写的多线程,都必须注意保护。
首先,在delphi中,如果是可视化的vcl,那肯定是线程不安全的,访问的时候,需要同步。如果是非可视化的vcl,那么如果只是一个线程使用,那这个线程没有什么不安全的,如果涉及到多个线程访问,那不管是vc写的多线程,还是其他语言写的多线程,都必须注意保护。
L lngdtommy Unregistered / Unconfirmed GUEST, unregistred user! 2006-11-23 #5 同意樓上: 單個純種訪問無所謂安全與否,多線程訪問注意同步及保護