线程间同步的必要性?解决方案
线程间同步的必要性?
线程间同步 是为了 实现 程序的稳定 还是 为了数据的安全呢?
比如:我有 个两线程 程序,线程1 接收数据,主线程更新界面 显示, 我并不像其他软件那样 对数据完整性 有苛刻的要求, 这样我是否可以不做线程同步呢?
------解决方案--------------------
如果两个线程没有数据交流或共享数据,就根本没同步的必要啊
------解决方案--------------------
一般是为了数据的安全性吧,像你这样的情况线程同步的意义也不是很大
------解决方案--------------------
我觉得不用同步吧
把界面窗口的指针传递给接收数据的线程1,让线程1去更新界面显示
界面窗口的成员都弄成public的,就行了
------解决方案--------------------
如果两个线城操纵或者使用了同一个数据,需要同步
------解决方案--------------------
仙人指路:
界面窗口的成员都弄成public的,就行了
这是破坏封装性最好的开始
------解决方案--------------------
我认为有2种情况
线程A,B
一、
如果B处理的事情 需要A有了结果才能继续的话,需要线程同步。
二、
如果A,B 会同时处理一个对象或则一个内存的话,为了安全性也需要同步。
在实际开发中:
如果是一个简单的共用对象,你可以不需要同步,例如:全局int i;A 不停的把 i的结果显示出来,B 不停的++i;即使你在i 中不停的--i 也没有事。
另一个:
我们以CSocket 和 CAsyncSocket 为例,CSocket是派生自CAsyncSocket的,CAsyncSocket是非堵,CSocket是堵,他们都不是线程安全的,如果在2条线程处理他们会出现什么问题?有趣的是单核运行的话可能24小时都没有异常,多核的话可能几分钟就异常了。其中又以CAsyncSocket为甚,CAsyncSocket几乎不能在多线程中使用,而CSocket在多线程中使用几乎没有问题(为什么这么说?因为MSDN说是非线程安全,而使用起来几乎没有遇到异常)
线程间同步 是为了 实现 程序的稳定 还是 为了数据的安全呢?
比如:我有 个两线程 程序,线程1 接收数据,主线程更新界面 显示, 我并不像其他软件那样 对数据完整性 有苛刻的要求, 这样我是否可以不做线程同步呢?
------解决方案--------------------
如果两个线程没有数据交流或共享数据,就根本没同步的必要啊
------解决方案--------------------
一般是为了数据的安全性吧,像你这样的情况线程同步的意义也不是很大
------解决方案--------------------
我觉得不用同步吧
把界面窗口的指针传递给接收数据的线程1,让线程1去更新界面显示
界面窗口的成员都弄成public的,就行了
------解决方案--------------------
如果两个线城操纵或者使用了同一个数据,需要同步
------解决方案--------------------
仙人指路:
界面窗口的成员都弄成public的,就行了
这是破坏封装性最好的开始
------解决方案--------------------
我认为有2种情况
线程A,B
一、
如果B处理的事情 需要A有了结果才能继续的话,需要线程同步。
二、
如果A,B 会同时处理一个对象或则一个内存的话,为了安全性也需要同步。
在实际开发中:
如果是一个简单的共用对象,你可以不需要同步,例如:全局int i;A 不停的把 i的结果显示出来,B 不停的++i;即使你在i 中不停的--i 也没有事。
另一个:
我们以CSocket 和 CAsyncSocket 为例,CSocket是派生自CAsyncSocket的,CAsyncSocket是非堵,CSocket是堵,他们都不是线程安全的,如果在2条线程处理他们会出现什么问题?有趣的是单核运行的话可能24小时都没有异常,多核的话可能几分钟就异常了。其中又以CAsyncSocket为甚,CAsyncSocket几乎不能在多线程中使用,而CSocket在多线程中使用几乎没有问题(为什么这么说?因为MSDN说是非线程安全,而使用起来几乎没有遇到异常)