在线程中访问主窗体的ClientSocket控件,安全吗?
我在主窗体有个ClientSocket控件,另外一个线程中,取队列中的数据,并把队列中的数据给发送出去。
这个子线程中需要访问主窗体(主线程)中的ClientSocket控件:
子线程如下:
Form1->ClientSocket1->Socket->SendBuf(bufdata,Len);
这样就是多线程程序,会可能存在主窗体和子线程同时访问这个 ClientSocket不同操作。这样安不安全,冲不冲突。
如果存在,该怎样处理。
[解决办法]
如果操作不频繁,问题不大,
如果操作频繁,建议设置个变量限制一下,不要这个发送过程中,另一个线程又来发送数据。
[解决办法]
线程间同时操作某一对象或者某一变量的话 用线程临界区
[解决办法]
就算访问不频繁,也不能保证不冲突,同一时刻多个线程完全有可能同时访问同一个对象. 用临界,信号灯等同步机制才保险.