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

共享内存及线程数据同步的问题。

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

    本文导语:  麻烦高人解一下疑惑。 1.同享内存采用信号量进行内存数据的同步。请问是否在读共享内存的地方也要加信号量? 2.线程采用互斥锁进行数据的同步,假设只有主线程会写全局变量,其它线程只会读。请问是否需要...

麻烦高人解一下疑惑。

1.同享内存采用信号量进行内存数据的同步。请问是否在读共享内存的地方也要加信号量?

2.线程采用互斥锁进行数据的同步,假设只有主线程会写全局变量,其它线程只会读。请问是否需要加互斥锁?是否写与读的地方都要加?

|


比如共享内存里的结构是:
struct {
int read_pos;
int write_pos;
data_t data[SZ_DATA];
} *pshared_data;

你可以在写完 pshared_data->data[write_pos]之后再write_pos++

这样在读共享内存时, pshared_data->data[pshared_data->write_pos-1]的数据肯定是完整的。

|
1.同享内存采用信号量进行内存数据的同步。请问是否在读共享内存的地方也要加信号量? 
也可用互斥锁啊

2.线程采用互斥锁进行数据的同步,假设只有主线程会写全局变量,其它线程只会读。请问是否需要加互斥锁?是否写与读的地方都要加?
可以使用读写锁。
如果仅仅访问一个32位以内的全局变量,可以不用加锁。

|
互斥锁本来就是保护数据的,即使确定只有一个修改,其他的只读也是不行的,因为你要保证你读的是否是修改后的数据。一般都要加

|
共享内存信号量是个全局,定义了之后哪里都是可见的。只要那个key对的,所操作的就是同一个sem

    
 
 

您可能感兴趣的文章:

  • 嵌入式linux下线程通信可以用共享文件法吗?
  • 进程与线程资源的共享问题
  • 线程到底共享了什么
  • POSIX线程数据共享
  • 多线程共享变量只是读取会不会冲突?
  • linux多线程数据共享策略问题?
  • 请大家讨论,来者有分,java中多个线程之间共享数据的方法都有哪些?
  • 如何在主进程共享子线程中accept得到的socket号?
  • 多线程共享变量问题
  • java通过共享变量结束run停止线程的方法示例
  • linux 多线程 问题 全局变量 共享问题,恳请赐教,帮助>>
  • 关于Linux多线程互斥共享资源
  • 关于线程特定数据共享全局变量的一个程序
  • 关键词:◆C++类 ◆线程 ◆共享数据 ◆◆◆请有经验的高手帮忙出出主意
  • 关于多个线程访问一个全局的共享buf
  • java多线程并发中使用Lockers类将多线程共享资源锁定
  • 多线程间数据共享,再次提问题。
  • 共享内存和信号灯同步问题
  • 一个关于共享目录同步的问题
  • 两个不同的进程对共享内存中的变量读写,一般通过什么方式同步方便?
  • 老板要用linux服务器共享一些CAD文件,并且要同步更新,linux有这功能吗?
  • 进程数据同步:消息队列还是共享内存+信号
  • Unix下共享内存一个写N个读的进程同步与互斥
  • linux下多进程访问共享内存队列同步的问题
  • 深入同步访问共享的可变数据分析
  • web服务器集群(多台web服务器)session同步、共享的3种解决方法
  • 在linux下,用共享内存来实现进程间的数据交互,请问如何实现同步?(这些进程没有父子关系)
  • 谁给个进程间共享内存同步的例子,多谢
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux 共享内存介绍及实现代码
  • 多个进程对系统V共享内存进行读写,怎样实现对共享内存部分进行加解锁?
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • 程序需要共享内存相当大,但是系统的内存有限
  • 在linux下能不能创建一个堆,然后给堆指定一块共享内存,然后各个程序用此堆来new对象来共享?
  • 请教一个关于内存分配的问题(系统和DMA共享一块物理内存空间)
  • 不同用户user之间如何访问共享内存?
  • Unix/linux下如何监测共享内存的使用情况
  • 共享内存问题,高手们请进!!!
  • 判断共享内存中是否有数据
  • 【求助】linux下什么是共享内存,怎么查看。
  • linux下共享内存的覆盖或清空
  • 进程同时访问两个大共享内存,会失败?
  • 为什么不将数据直接写入共享内存?
  • aix 的开个共享内存的问题
  • linux下共享内存 函数shmat()的使用!
  • 请详细介绍一下共享内存机制~~
  • 初学者关于共享内存的几个问题-->
  • 文件描述符的限制?(共享内存)
  • 在语言中,什么是共享内存,怎样使用,举例?
  • Key值为0xffffffff的共享内存问题
  • NFS共享作业时, 在客户端只可以看到服务器端的共享目录,而看不到共享目录下的内容.?
  • 如何共享 共享库(*.so)中的变量?
  • 局域网共享问题:win2000的机器看不到linux机器的共享目录?
  • 用samba共享其它机子访问Linux共享时,机子可以进入,但要打开共享文件夹时提示“无法访问...找不到网络名。”这是什么原因呢?
  • 局域网中的红旗2.0如何共享到win98服务器的联接共享?
  • 局域网共享问题:win2000的机器看不到linux机器的共享目录?解决立即给分
  • 几个servlet共享一些数据 如我从数据库里读出一些重要的设置存入vector 让几个servlet共享 怎么做到?先谢
  • 求助linux普通用户下内存共享(系统V共享)大家进来看看啊!急!!
  • 关于中断共享的问题:ADC 与触摸屏的中断共享
  • 无法访问samba服务器中的共享文件夹


  • 站内导航:


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

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

    浙ICP备11055608号-3