当前位置:  技术问答>linux和unix

linux多线程数据共享策略问题?

    来源: 互联网  发布时间:2016-04-03

    本文导语:  我有一个结构,如 struct my{ int a; int b; char c; char d; shoar e; } 这是一个全局的共享的数据。有多个线程要访问这个结构,对整个结构的数据做处理。 如果每个线程在处理数据前都加mutex锁,处理完了以后再解锁,效率...

我有一个结构,如
struct my{
int a;
int b;
char c;
char d;
shoar e;
}
这是一个全局的共享的数据。有多个线程要访问这个结构,对整个结构的数据做处理。
如果每个线程在处理数据前都加mutex锁,处理完了以后再解锁,效率肯定有问题。
因为每个线程要在处理这个结构的数据。失去了多线程的意义。

如果我把全局的这个数据在每次处理前拷贝一个临时变量,处理的时候处理临时变量,处理完了再
写入全局。这样的方法会造成这个全局的数据不同步。肯定也有问题。

那么我想问下,正确的应该是怎么样做的呢?采取怎样的方法的呢?不知道我的问题说清楚没有

|
....

4,5,6楼都说完了

|
1.读写锁
2.如果该struct每个数据成员之间没有“一致性”关系(一致性:例如a永远是b的2倍),那就可以每个数据成员上1把锁,从而减少多线程争用锁的几率。虽然多几把锁会增加一些开销,但是如果struct成员不多且多线程对该数据结构访问频繁,还是值得的。

|
使用读写锁的方式可以稍微提高效率。
另外,只要你加锁部分的代码足够简短,你根本不用担心效率的问题。

|
这在多线程编程中是在所难免的,要保证共享数据的完整性只能以牺牲效率为代价。所以在多线程编程中应尽量减少共享数据的使用。还有每个线程拥有锁定时间应该尽量短。

    
 
 

您可能感兴趣的文章:

  • Windows和Linux下C++类成员方法作为线程函数方法介绍
  • 请问Linux核心支持多线程吗?开发库有线程库吗?线程好用吗?(稳定?)
  • Linux下GCC内置原子操作函数(多线程资源访问)介绍
  • 求个linux多线程编程的例子,要有线程池的 通用些更好
  • 请问Linux下线程开销为什么这么大?一个线程要占用近10M内存
  • Linux多线程时一些线程分不到时间片
  • 说说windows线程和linux线程的区别?
  • linux 下多线程 每个线程能否使用alarm来处理,信号是否会乱呢?
  • linux下,如何在多线程中每个线程设置一个定时器,在线等,急。。。谢谢
  • 在创建linux线程时为什么会多一个线程?
  • linux如何主动将线程放入到线程调度队列中重新排队?
  • 在linux RH73下为什么单进程只能开1021个线程线程.
  • Linux下如何让主线程挂起一个指定的时间段而子线程继续运行?谢谢
  • LINUX下有没有线程概念,和WIN下线程概念有什么不同,谢谢.
  • linux线程编程问题
  • linux线程最大数,奇怪,怎么只有300?而且线程是用完就没了,不是同时300啊!
  • 跪求:linux下pthread 双线程计算和单线程的运行时间完全相同是为什么?
  • linux线程与进程的问题
  • linux 下子线程不能执行的问题?
  • linux多线程编程的问题
  • linux多线程编程
  • 请问操作系统中任务调度主要有哪些策略,LINUX用哪种啊??实时操作系统又有哪些任务调度哪些策略啊??
  • 关于公网上的linux服务器安全策略控制
  • Linux安全策略 SELinux
  • linux cpu调度策略中的老化公式
  • 设计一个Linux的存储策略,求思路
  • 请教Linux内存分配策略与Windows有何异同?
  • 生产环境中大家的linux系统telnet,ssh等登陆的安全策略如何搞得?
  • Oracle商业数据库对Linux的策略是什么
  • 中小异构Linux网络安全策略
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux 共享内存介绍及实现代码
  • 局域网共享问题:win2000的机器看不到linux机器的共享目录?
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • 在linux下能不能创建一个堆,然后给堆指定一块共享内存,然后各个程序用此堆来new对象来共享?
  • 局域网共享问题:win2000的机器看不到linux机器的共享目录?解决立即给分
  • 用samba共享其它机子访问Linux共享时,机子可以进入,但要打开共享文件夹时提示“无法访问...找不到网络名。”这是什么原因呢?
  • LINUX如何映射另一台LINUX的共享目录?
  • linux linux 之间共享文件夹
  • 我想知道LINUX如何与WIN98,WIN2000共享资源?
  • XP下设置与linux 本地连接的Internet共享问题
  • 求助linux普通用户下内存共享(系统V共享)大家进来看看啊!急!!
  • 嵌入式linux下线程通信可以用共享文件法吗?
  • Unix/linux下如何监测共享内存的使用情况
  • 当别人用FTP协议访问我的LINUX时,要显示一些共享文件夹。
  • linux与windows如何实现共享
  • 老板要用linux服务器共享一些CAD文件,并且要同步更新,linux有这功能吗?
  • linux下共享内存的覆盖或清空
  • 【求助】linux下什么是共享内存,怎么查看。
  • 98的机子有modem,linux的无,能否通过共享使linux的机子都能上网?
  • linux 下如何共享使用windows下的内容
  • linux下共享内存 函数shmat()的使用!
  • linux c/c++ IP字符串转换成可比较大小的数字
  • 在win分区上安装linux和独立分区安装linux有什么区别?可以同时安装吗?(两个linux系统)
  • linux哪个版本好?linux操作系统版本详细介绍及选择方案推荐
  • 在虚拟机上安装的linux上,能像真的linux系统一样开发linux程序么?
  • secureCRT下Linux终端汉字乱码解决方法
  • 我重装window后,把linux的引导区覆盖了,进不了linux怎么办?急啊,望热心的人帮助 (现在有linux的盘)
  • Linux c字符串中不可打印字符转换成16进制
  • 安装vmware软件,不用再安装linux系统,就可以模拟linux系统了,然后可以在其上学习一下LINUX下的基本操作 了?
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3