写一个线程安全的类有什么要注意的?

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,通知编译器,使它在优化时不产生错误

69,381

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧