线程安全性理解
来源:互联网 发布:石油来源 知乎 编辑:程序博客网 时间:2024/06/07 00:35
以前常听高手告诫MFC对象不要跨线程使用,因为MFC不是线程安全的。比如CWnd对象不要跨线程使用,可以用窗口句柄(HWND)代替。CSocket/CAsyncSocket对象不要跨线程使用,用SOCKET句柄代替.那么到底什么是线程安全呢?什么时候需要考虑?如果程序涉及到多线程的话,就应该考虑线程安全问题。比如说设计的接口,将来需要在多线程环境中使用,或者需要跨线程使用某个对象时,这个就必须考虑了。关于线程安全也没什么权威定义。在这里我只说说我的理解:所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。
一般而言“线程安全”由多线程对共享资源的访问引起。如果调用某个接口时需要我们自己采取同步措施来保护该接口访问的共享资源,则这样的接口不是线程安全的.MFC和STL都不是线程安全的. 怎样才能设计出线程安全的类或者接口呢?如果接口中访问的数据都属于私有数据,那么这样的接口是线程安全的.或者几个接口对共享数据都是只读操作,那么这样的接口也是线程安全的.如果多个接口之间有共享数据,而且有读有写的话,如果设计者自己采取了同步措施,调用者不需要考虑数据同步问题,则这样的接口是线程安全的,否则不是线程安全的
0 0
- 线程安全性理解
- servlet线程安全性问题理解
- 深入理解Servlet线程安全性问题
- 深入理解Servlet线程安全性问题
- 线程安全性
- 线程安全性
- 线程安全性
- 线程安全性
- 线程安全性
- 线程安全性
- 线程安全性
- 线程安全性
- 线程安全性
- 线程安全性
- 线程安全性
- 线程安全性
- 线程安全性
- 线程安全性
- iOS与JS交互实战篇(ObjC版)
- Java基础整理-Java试题(一)
- iOS 关闭键盘 退出键盘 的5种方式
- 竞争条件和关键区
- Itext5.8.8 Html 转化成PDF
- 线程安全性理解
- LeedCode 87. Scramble String
- 黑马程序员 NSDictionary的介绍及基础用法
- matlab---方程求解
- JavaSE入门学习14:Java面向对象之内部类
- nor flash启动与nand flash启动的区别
- 2015年工作总结
- HDOJ4908 - BestCoder Sequence
- Broadleaf电商系统开发(三) - 汉化