C和pthread:如何将互斥锁引用到特定变量?

弓公园

代码中,显示了使用互斥锁的示例。特别是,互斥量首先在之前声明main

pthread_mutex_t mutexsum;

互斥锁“保护”的特定变量dotstr.sum位于全局结构中dotstr:每个线程在获取a之后都在其上写入lock对应的代码是:

pthread_mutex_lock (&mutexsum);
dotstr.sum += mysum;
printf("Thread %ld did %d to %d:  mysum=%f global sum=%f\n",offset,start,end,mysum,dotstr.sum);
pthread_mutex_unlock (&mutexsum);

我已经编译了代码,它显然可以工作,但是我不太了解互斥体。那么,程序如何知道“通用”互斥mutexsum仅应用于dotstr.sum变量?

还有许多其他全局变量可以锁定。为什么互斥锁mutexsum和我要锁定的变量之间的代码中没有明确的关系dotstr.sum

克尼格

(pthread)互斥锁未明确绑定到特定变量,它只是一种通用的锁定机制。您有责任确保对该变量进行的每个操作都正确地被锁定和解锁包围。

您的程序具有(n个隐式)合同,只有1个线程可以访问dotstr.sum互斥锁可确保只有1个线程可以在该互斥锁上锁定,从而帮助您强制执行该互斥锁,但这不会迫使您每次使用时都会对其进行锁定和解锁dotstr.sum

例如,尝试注释掉锁定和解锁行。该程序仍将编译并运行,但是结果可能并非您想要的那样。

您可以将互斥锁与任何内容相关联,例如从文件读取或写入。但是,必须确保对要锁定的事物的所有访问都实际上已锁定。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

pthread条件变量和互斥锁,程序有死锁

来自分类Dev

pthread条件变量和互斥锁,程序有死锁

来自分类Dev

如何在相互依赖的C文件中定义pthread和互斥锁?

来自分类Dev

带有pthread和互斥锁的OpenCV

来自分类Dev

如何正确处置pthread互斥锁?

来自分类Dev

在C中使用互斥锁同步pthread

来自分类Dev

在C中使用互斥锁同步pthread

来自分类Dev

C对如何初始化和实现pthread互斥量和条件变量感到困惑

来自分类Dev

解决用餐哲学家的问题使用pthread,互斥锁和条件变量

来自分类Dev

Azure RM模板。如何将变量值引用到资源

来自分类Dev

C ++中pthread互斥锁的销毁和取消初始化顺序

来自分类Dev

语句中使用的pthread互斥锁锁定变量

来自分类Dev

Linux pthread互斥锁和内核调度程序

来自分类Dev

Linux pthread互斥锁和内核调度程序

来自分类Dev

如何将.xproj引用到.csproj中?

来自分类Dev

如何将 JSX 文件引用到 HTML 页面

来自分类Dev

如何将@IBAction Func 引用到多个按钮插座

来自分类Dev

参考空间创建的变量将存储在哪里?如何将它们引用到其参考空间?

来自分类Dev

如何将一个类变量引用到另一个类进行操作?

来自分类Dev

C pthread互斥锁:“ {”之前的期望表达式

来自分类Dev

互斥锁与C ++ 11中的pthread兼容吗?

来自分类Dev

使用互斥锁的 pthread 同步

来自分类Dev

如何将互斥参数作为变量传递

来自分类Dev

如何将 js sdk 正确添加和引用到用于 aws S3 托管的 Angular 项目中

来自分类Dev

实现我自己的互斥锁时如何从内联汇编中引用 C 中的指针

来自分类Dev

在进程之间共享条件变量和互斥锁:互斥锁必须先锁定吗?

来自分类Dev

在进程之间共享条件变量和互斥锁:互斥锁必须先锁定吗?

来自分类Dev

条件变量和互斥锁的线程池(大概)锁定问题

来自分类Dev

如何将输入标签调用到C#代码

Related 相关文章

  1. 1

    pthread条件变量和互斥锁,程序有死锁

  2. 2

    pthread条件变量和互斥锁,程序有死锁

  3. 3

    如何在相互依赖的C文件中定义pthread和互斥锁?

  4. 4

    带有pthread和互斥锁的OpenCV

  5. 5

    如何正确处置pthread互斥锁?

  6. 6

    在C中使用互斥锁同步pthread

  7. 7

    在C中使用互斥锁同步pthread

  8. 8

    C对如何初始化和实现pthread互斥量和条件变量感到困惑

  9. 9

    解决用餐哲学家的问题使用pthread,互斥锁和条件变量

  10. 10

    Azure RM模板。如何将变量值引用到资源

  11. 11

    C ++中pthread互斥锁的销毁和取消初始化顺序

  12. 12

    语句中使用的pthread互斥锁锁定变量

  13. 13

    Linux pthread互斥锁和内核调度程序

  14. 14

    Linux pthread互斥锁和内核调度程序

  15. 15

    如何将.xproj引用到.csproj中?

  16. 16

    如何将 JSX 文件引用到 HTML 页面

  17. 17

    如何将@IBAction Func 引用到多个按钮插座

  18. 18

    参考空间创建的变量将存储在哪里?如何将它们引用到其参考空间?

  19. 19

    如何将一个类变量引用到另一个类进行操作?

  20. 20

    C pthread互斥锁:“ {”之前的期望表达式

  21. 21

    互斥锁与C ++ 11中的pthread兼容吗?

  22. 22

    使用互斥锁的 pthread 同步

  23. 23

    如何将互斥参数作为变量传递

  24. 24

    如何将 js sdk 正确添加和引用到用于 aws S3 托管的 Angular 项目中

  25. 25

    实现我自己的互斥锁时如何从内联汇编中引用 C 中的指针

  26. 26

    在进程之间共享条件变量和互斥锁:互斥锁必须先锁定吗?

  27. 27

    在进程之间共享条件变量和互斥锁:互斥锁必须先锁定吗?

  28. 28

    条件变量和互斥锁的线程池(大概)锁定问题

  29. 29

    如何将输入标签调用到C#代码

热门标签

归档