在共享内存中初始化 pthread 互斥体

2024-02-19

我可以使用初始化器初始化静态内存中的互斥体:

pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER;

但是如何在共享内存中初始化一个变量,在该内存中我必须与初始化变量分开分配内存?我可以执行 memcpy() 吗?

pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER;
memcpy(&globalmutex, &mymutex, sizeof(mymutex);

我想我记得很久以前读过,当将互斥锁分配到保证初始化为零的内存中时,它不需要初始化——正是针对这种情况——但我在任何地方都找不到写下来的内容。这是真的吗?--我注意到 PTHREAD_MUTEX_INITIALIZER 在我的 Redhat 系统上被定义为 { { 0, 0, 0, 0, 0, 0, { 0, 0 } } } 。


这里需要小心,并非所有实现都支持可以跨进程工作的互斥体。

PThreads 本身通过使用进程共享属性来支持这一点,但如果您需要的话,您将不会使用默认的初始化程序。

相反,你需要使用pthread_mutex_init()正确构造互斥体属性结构后:

int pthread_mutex_init(
    pthread_mutex_t *mutex,
    const pthread_mutexattr_t *attr);

最好的选择是在共享内存中分配空间,然后将其转换为正确的类型并将其传递给init功能。我认为这可能比初始化后复制它更安全。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在共享内存中初始化 pthread 互斥体 的相关文章

  • 共享内存和IPC [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在阅读有关共享内存的教程 发现以下陈述 如果一个进程希望通知另一个进程新数据已插入共享内存 则必须使用信号 消息队列 管道 套接字
  • PHP - 访问用 C++ 创建的共享内存

    几天以来 我一直在努力让以下事情发挥作用 我有一个微型 C 程序 它从串行端口连续读取一些数据 该数据存储在共享内存中 如下所示 HANDLE hMapFile hMapFile CreateFileMapping INVALID HAND
  • 如何提供一系列交错线程来显示代码中断并且不提供完美的同步?

    我知道下面的代码是做什么的 我知道为什么它是一个损坏的同步代码 因为它只有一个条件变量 而我们需要两个 但我不知道如何提供一系列交错线程来显示它不起作用 您能举例说明为什么此代码不起作用吗 1 cond t cond PTHREAD CON
  • 无法锁定 DLL 上的 c++ 11 std::mutex [重复]

    这个问题在这里已经有答案了 我试图通过使用 std lock 对象来防止多次调用 DLL 初始化函数 在独立程序上使用这样的程序时 include
  • 共享内存——需要同步

    我见过一个项目 其中进程之间的通信是使用共享内存进行的 例如使用 CreateFileMapping在 Windows 下 并且每当其中一个进程想要通知共享内存中某些数据可用时 一种使用命名事件的同步机制会通知感兴趣的一方共享内存的内容发生
  • C 中的竞争条件

    我有以下程序 缩写 来使用线程计算每个字母在文件中出现的次数 define N LETTERS 26U define IS LETTER x x gt A x lt Z define HASH x toupper x A typedef u
  • 确定文件映射到内存的次数

    是否可以获取 Linux 中特定文件描述符上的内存映射总量 为了清楚起见 我制作了一个如何打开 创建内存映射的小示例代码 int fileDescriptor open mapname O RDWR O CREAT O EXCL 0666
  • 在 Go 中,我们可以使用每个键的锁来同步映射的每个键吗?

    在 Go 中 我们可以使用每个键的锁来同步映射的每个键吗 地图级全局锁总是需要的吗 文档说任何对地图的访问都不是线程安全的 但如果有一把钥匙 那么可以单独上锁吗 不完全是 但如果您只是从地图上读取指针并修改所指对象 那么您就没有修改地图本身
  • 如何调整/dev/shm的大小?

    On Ubuntu 18 04 当我跑步时 df h 我看到这个结果 Filesystem Size Used Avail Use Mounted on tmpfs 3 9G 73M 3 8G 2 dev shm dev shm大小为3 9
  • IPC 的共享内存和线程的共享内存有什么区别?

    让我们使用 POSIX 共享内存 例如 shmget 协调进程间通信的常见调用 调用 shmget 并协调共享内存段上的通信与 Linux 在单个进程中实现共享内存和线程之间的同步有何不同 其中之一更轻吗 SHM适用于多进程中的IPC 在现
  • 如何实现 MVC 4 Web App 服务器端互斥体

    我不是 MVC 专家 但我相当确定这是可以实现的 但是 我不知道如何在 MVC 4 中做到这一点 为了进行测试 我使用了使用 VS 2012 创建网站时提供的默认 Web 应用程序 为简单起见 请考虑多个用户 例如 3 在同一时间点击 Ho
  • 为什么编译器会优化掉由于 strncmp() 而导致的共享内存读取,即使使用了 volatile 关键字?

    这是一个程序foo c将数据写入共享内存 include
  • 如果其中一个进程意外终止,进程间内存会发生什么情况?

    如果您对动机感兴趣 我将在接下来的几句话中详细说明 如果不是 请跳至问题 我正在考虑制作快速记录器 但当程序崩溃时不受影响 又名最后一些日志消息不会丢失 所以我的想法是写入共享内存 ringbuffer 并让另一个低优先级进程从中读取并进行
  • 与 fork() 共享堆内存

    我正在努力用 C 语言实现一个数据库服务器 它将处理来自多个客户端的请求 我在用fork 处理单个客户端的连接 服务器将数据存储在堆中 堆由指向动态分配记录的哈希表的根指针组成 记录是具有指向各种数据类型的指针的结构 我希望进程能够共享这些
  • thrd_busy 和 mtx_lock()/mtx_timedlock()

    我对 C1x 互斥体有以下问题 7 25 4 哪些情况可以mtx lock return thrd busy而不是阻塞 哪些情况可以mtx timedlock return thrd busy 注意thrd busy在 7 25 1 5 中
  • pthread_mutex_t VS @synchronized 块?

    static pthread mutex t gLock global pthread mutex init gLock NULL in init pthread mutex lock gLock for int i 0 i lt mess
  • 在并发读取中是否使用互斥体

    我正在 Linux 中使用 C 进行编程 并且使用 pthreads 库 我正在使用互斥体来保护一些共享变量 但我不确定在这种特定情况下是否有必要使用互斥体 我有 3 个线程 共享变量是一个字符串 全局变量 线程1更改它的值 然后线程2和线
  • 将文件中的非连续块映射到连续内存地址

    我对使用内存映射IO的前景感兴趣 最好是 利用 boost interprocess 中的设施实现跨平台 支持 将文件中的非连续系统页面大小块映射到 内存中连续的地址空间 一个简化的具体场景 我有许多 普通旧数据 结构 每个结构都有固定长度
  • 是否可以在Java中有效地实现seqlock?

    Another question https stackoverflow com q 14660529 149138让我想知道是否seqlock http en wikipedia org wiki Seqlock可以通过Java中的易失性
  • 无法将项目追加到多处理共享列表

    我正在使用多重处理来为我的应用程序创建子流程 我还在进程和子进程之间共享一个字典 我的代码示例 主要流程 from multiprocessing import Process Manager manager Manager shared

随机推荐

  • iOS 项目的单元测试 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我对于 iOS 开发还是比较陌生的 对于任何类型的测试 除了编译 运行和检查你想到的任何东西 之外的测
  • 当表单操作属性为“#”(数字/井号/符号/字符)时,这意味着什么?

    当表格出现时 这意味着什么action属性是 数字 井号 符号 字符 当表单输入时会发生什么formaction属性设置为 这是否会阻止输入被提交到服务器
  • 用按位运算替换最低有效位

    用提供的位替换字节的最低有效位的最佳方法是什么 我知道如何检查和比较最后一位 例如使用 posix ffs 函数 但我想知道是否有性能更好的解决方案 而不检查替换位是 0 还是 1 该示例是用 python 伪代码编写的 但我将用 C 实现
  • web3.js如何搜索所有曾经创建的合约并查看地址

    我是 web3 js 和 Solidity 的新手 我的问题与我们在区块链上搜索的方式有关 如果我们知道合约地址 就很容易搜索特定合约 然而 我们如何使用最初用于创建合约的地址来查找和识别特定类型的合约 例如 我有一个合同 Contract
  • OSX Game Center:无法与帮助应用程序通信

    I m setting up Game Center for my OSX game but it can t authenticate player with the following error OSX 10 10 Yosemite
  • 计算页面大小和段大小

    在分页分段系统中 我们有32位的虚拟地址和12位的偏移量 11位的段和9位的页号 我们如何计算页面大小 最大段大小和最大段数 保留 12 位用于偏移量 因此页面大小为 2 12 4KB 9 位保留用于页号 因此每个段可以包含 2 9 512
  • 绘制具有颜色渐变的矩阵“光谱图”

    使用 STFT 短时傅立叶变换 后 输出是一个表示 3d 图的矩阵 就像 A X Y M A是输出矩阵 X是时间 Y是频率 第三维M是由像素颜色强度表示的幅度 如下图所示 频谱图2 https i stack imgur com mtWqb
  • 使用 Caret 在 R 中创建 k 折 CV 的折叠

    我正在尝试使用以下位置提供的数据为几种分类方法 hiperparameters 制作 k 折 CVhttp archive ics uci edu ml machine learning databases undocumented con
  • 如何知道ios中UIKeyboard上按下了哪个键? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在实现一个 iPad 应用程序
  • R中PRROC包的精确召回曲线计算

    我的问题与this https stackoverflow com questions 25020788 in r calculate area under precision recall curve aupr问题 我对计算精确召回曲线
  • 将 JAR 添加到 IntelliJ 中的 WEB-INF/lib 目录中的正确步骤是什么

    假设我有一个 Java Web 项目 我需要将几个 JAR 放入 WEB INF lib 目录中 在 Eclipse 中 如果您只是将这些 JAR 放在那里 Eclipse 就会像在类路径上一样拾取它们 然而 IntelliJ 似乎没有 将
  • 从 Python 类获取所有 @properties [重复]

    这个问题在这里已经有答案了 在Python中 我怎样才能得到所有特性一个类的所有成员 即由该类创建的所有成员 property装饰师 There are at least two questions 1 2 on stackoverflow
  • 计算与谓词匹配的元素数量的惯用方法是什么?

    除了这个之外 是否有更好的方法来计算谓词函数为 true 的元素数量 PredCount lst pred Length Select lst pred 我问这个问题是因为构建一个子集似乎效率低下lst with Select 并且因为Co
  • 将作曲家 1 和 2 保留在同一台机器上

    我们如何在同一台机器上使用 Composer 1 和 Composer 2 作为一名开发人员 我们在同一台机器上处理多个项目 并且项目 1 需要 Composer 1 项目 2 需要 compower 版本 2 这就是我曾经在同一台机器上安
  • 为什么我不能在 MySQL 中使用特定的排序规则?

    我有一个包含字符集的表latin1 通过检查show variables like character set database 和默认排序规则latin1 swedish ci 通过检查SHOW TABLE STATUS 我想使用排序规则
  • 如何部署线程安全的异步 Rails 应用程序?

    我在网上阅读了大量有关不同版本的 Ruby 和 Rails 中的线程安全和性能的材料 我想我现在已经很好地理解了这些内容 奇怪的是 讨论中似乎缺少的是如何实际部署异步 Rails 应用程序 当谈论应用程序中的线程和同步性时 人们想要优化两件
  • 寻找用于在细分域上进行数值积分的 Python 包

    我想知道是否有人知道基于 numpy scipy 的 python 包 可以在镶嵌域 在我的具体情况下 由 voronoi 单元格界定的 2D 域 上对复杂的数值函数进行数值积分 过去 我使用了 matlab 文件交换之外的几个包 但如果可
  • Netbeans 外部控制台错误

    我正在尝试使用 netbeans 在 Windows 10 中 在 C 中编译一个简单的 hello world 程序 但是出现以下错误 sh cygdrive c Users myuser 1 AppData local Temp dli
  • 如何获得随机数,每个数字都有自己的概率[重复]

    这个问题在这里已经有答案了 例如 我想从集合 S 0 1 2 3 中获取随机数 但现在每个数字都有不同的概率 而不是每个数字都有相同的显示概率 即 25 比如说 50 30 20 10 我该如何编码 在 Java 或 C 中 我更喜欢 C
  • 在共享内存中初始化 pthread 互斥体

    我可以使用初始化器初始化静态内存中的互斥体 pthread mutex t mymutex PTHREAD MUTEX INITIALIZER 但是如何在共享内存中初始化一个变量 在该内存中我必须与初始化变量分开分配内存 我可以执行 mem