函数可以锁定互斥量吗?

标签 c multithreading linux-kernel mutex

我正在为 linux 内核编写一个内存管理器,它在线程之间共享一个循环的 PID 列表(学校项目)。 该程序使用 1 个生产者、2 个消费者模型找到僵尸并杀死它们。 (强加给我们,这样我们才能理解共享内存)。

我想让这个列表成为一个对象,并让函数处理迭代指针和检查单元格的值。

那么,如果一个线程调用了一个外部函数,那么这个函数是否可以拥有这个互斥量呢?还是必须在线程内完成?

我是不是完全错了?

非常感谢 -贾里德

最佳答案

说“函数”拥有互斥锁是没有意义的。它是拥有它的线程。所以是的,有可能,调用您的外部函数的任何线程都将拥有互斥量。

如果您查看线程实现的内核代码,您会发现其中一个变量是它拥有的互斥体列表。

关于函数可以锁定互斥量吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14881247/

相关文章:

C 排序算法没有输出正确的值?

c - 如何在 C 中使用这个定义的类型?

c - 我无法理解这种类型转换

winforms - 在 WinForms 中,为什么不能从其他线程更新 UI 控件?

c++ - 寻求内存泄漏方面的帮助 - 拥有多线程队列、字符缓冲区和结构

c# - 如何使用 ContinueWith 正确管理任务中的异常

c - Linux内核中嵌入锁的动态分配/释放结构

c - 判断第一棵树是否是第二棵树的子集

linux-kernel - Linux Kernel Boot Arguments 在哪里解析

multithreading - Linux 是否会在所有内核上都进入内核?