在Linux上如何创build互斥锁?

我想知道如何在Linux上创build互斥体? 我想通了,那pthread_mutex_init()不会改变pthread_mutex_tvariables的值,那么如何“创build”mutex?

它将这个variables标记为某种系统资源还是什么?

我正在为类实现R值构造函数,在它的正文中有一个pthread_mutex_t字段,我不知道如何一个类的互斥体移动到另一个类中。

你可以看到pthread_mutex_init在这里做什么(警告,你的大脑会受到伤害)。

它做memset()互斥体。

但是,互斥体是在futex调用之上实现的。 这对存储器地址起作用,即其中一个pthread_mutex_t成员的地址被用作系统资源。 这意味着你不能复制/移动pthread_mutex_t。

你似乎想要将互斥体的所有权交给另一个类。 你确定这是解决你的问题的正确方法吗? 如果你绝对需要这样做,你可以创建一个auto_ptr来传递所有权:

 class A { A(const A & other) mutex(other.mutex) { /* ... */ } auto_ptr<pthread_mutex_t> mutex; }