社区
C语言
帖子详情
写一个线程安全的类有什么要注意的?
bluefin
2002-08-20 10:24:12
我要写一个操作数据库的类,它的多个实例可能在不同的线程(进程)里,有什么要注意的地方吗?
...全文
76
7
打赏
收藏
写一个线程安全的类有什么要注意的?
我要写一个操作数据库的类,它的多个实例可能在不同的线程(进程)里,有什么要注意的地方吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
IamWhoIam
2002-08-20
打赏
举报
回复
关于这个问题,上面的回答都是正确的,依我个人的经验:
1.对于全局变量,尽量少使用.一定要使用的话在修改其值时要记得加锁.
2.对于调用的其它资源,如外部函数,确信他们是线程安全的,否则要加锁.
3.对于竞态资源要加锁.(好象和上面的重复的).
4.使用原子操作的函数可能会更为安全.尤其是在文件操作中.
5.待补充
hongbo_liu
2002-08-20
打赏
举报
回复
作好互斥与同步.
对于异常处理要完善.
dimcat
2002-08-20
打赏
举报
回复
你不要期望使用这个类的程序员会考虑数据的临界问题,也不要期望他会考虑脏数据问题。
这些都要再你的类内部实现。
VC中有三种控制临界资源访问的方式:
1.CRITICAL_SECTION, 2.Mutex, 3.Semaphore;
step_by_step
2002-08-20
打赏
举报
回复
注意尽量不要产生临界问题,比如说这个类的对象要同时操作一个临界资源等。
bluefin
2002-08-20
打赏
举报
回复
谢谢以上几位朋友,关于线程或进程安全有没有什么地方有这方面的介绍?UNIX里的函数是怎么回事?能不能说得详细一些?
rexp
2002-08-20
打赏
举报
回复
1.少用全局变量和静态变量,必须使用时要保证正确的互斥
2.对共同资源的使用还需要进行同步,保证对资源的正确访问
3.只使用多线程安全函数,一般的函数均有多线程安全的版本,在unix中,此类函数一般以_r结尾
4.注意逻辑流程,要防止互斥或者同步时候引起死锁,或者极大的降低程序的并发度等不良情况产生
peon
2002-08-20
打赏
举报
回复
同意楼上
此外volatile也很重要,把static和global定义为volatile,通知编译器,使它在优化时不产生错误
什么是多线程?如何实现多线程?
【转】什么是
线程安全
?怎么实现
线程安全
?什么是进程?什么是线程?什么是
线程安全
?添加
一个
状态呢?如何确保
线程安全
?synchronizedlock 转自:https://blog.csdn.net/csdnnews/article/details/82321777 什么是进程? 电脑中时会有很多单独运行的程序,每个程序有
一个
独立的进程,而进程之间是相互独立存在的。比如下图中的QQ、酷狗播放器、电脑...
面试官问 : ArrayList 不是
线程安全
的,为什么 ?(看完这篇,以后反问面试官)
面试官问 : ArrayList 不是
线程安全
的,为什么 ????
Java哪些集合
类
是
线程安全
的?
早在jdk1.1版本中,所有的集合都是
线程安全
的。 但是在1.2以及之后的版本中就出现了一些线程不安全的集合,为什么版本升级会出现一些线程不安全的集合呢? 因为线程不安全的集合普遍比
线程安全
的集合效率高的多。随着业务的发展,特别是在web应用中,为了提高用户体验减少用户的等待时间,页面响应速度(也就是效率)是优先考虑的。而且对线程不安全的集合加锁后也能达到安全的效果(但是效率会低,因为会有锁的获取已经等待)。 其实在jdk源码中相同效果的集合
线程安全
的比线程不安全的就多了
一个
同步机制,但是效率上却低了不止一
写
一个
线程安全
的单例模式
什么是单例模式? 单例模式,也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的
类
必须保证只有
一个
实例存在。许多时候整个系统只需要拥有
一个
的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在
一个
文件中,这些配置数据由
一个
单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。 单
java中哪些集合是
线程安全
的,哪些是线程不安全的
目录1. 常见集合2.什么叫“集合是线程不安全的”3.
线程安全
和线程不安全的集合3. 如何综合考虑线程不安全和效率低的问题 1. 常见集合 这里自己总结了一些比较常见的java集合,对于这些集合的特点和区别后期博客中会进行总结介绍: 2.什么叫“集合是线程不安全的” 当多个并发同时对非
线程安全
的集合进行增删改的时候会破坏这些集合的数据完整性; 例如:当多个线程访问同
一个
集合或Map时,如果有超...
C语言
69,381
社区成员
243,073
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章