gpt4 book ai didi

c++ - Boost、Mutex、类成员、共享对象成员

转载 作者:行者123 更新时间:2023-11-30 04:29:33 25 4
gpt4 key购买 nike

我是多线程编程的新手,如果这看起来太简单了,请不要笑。

我有一个简单的类对象,它有几个成员变量,例如,

class XYZ
{
public:
int a;
int b;
...
};

xyz 是多个线程之间的共享对象,在多个线程之间共享“a”的最佳方式是什么?例如,

在线程A中,我会做类似的事情

xyz.a = xyz.a + rand();

在线程B中,我会做类似的事情

xyz.a = xyz.a - rand();

我听说作为类(class)成员创建一个互斥体,有人可以举一个简单的例子来说明如何做到这一点吗。

如何创建允许多个线程安全访问其成员的类接口(interface)?

最佳答案

您可以使用互斥量。它们只能同时被一个线程锁定。

class XYZ
{
int a,b;
boost::mutex mutex;
}

然后用于线程代码

void thread(XYZ *xyz)
{
//....

// now a member of xyz should be accessed/changed.
{
boost::unique_lock<boost::mutex> lock(xyz->mutex); // lock first the mutex
// do something with members of xyz
// ...
} // mutex automatically freed because lock object destroyed

//...
}

关于c++ - Boost、Mutex、类成员、共享对象成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com