gpt4 book ai didi

c++ - Linux 编程中的线程安全变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:06:11 25 4
gpt4 key购买 nike

我正在编写一个共享库,它将允许链接的应用程序查询资源。

资源类仅使用静态方法实现(见下文)。它还使用一个全局对象(在匿名命名空间中很好地限定范围)。使用全局变量的原因是我不想将库的用户暴露给系统内部。我想我本可以使用 pimpl 习惯用法,但这仍然没有解决线程安全问题。

类看起来像这样:

//Header
class A
{
public:
static int foo();
static double foobar();
};


// Source
namespace
{
SomeResourceObject globvar; // <- how can this variable be made thread safe ?
}

int A::foo(){}
double A::foobar(){}

一些使用这个库的应用程序将是多线程的,因此可能会从不同的线程调用 A 上的方法。

因此我的问题是如何实现 globvar 以实现线程安全?

我在 Ubuntu 9.10 上使用 gcc 4.4.1 进行开发

最佳答案

如何将 globvar 对象包装在一个类中并提供本质上使用互斥锁的访问器/修改器?那应该给你一些线程安全。

关于c++ - Linux 编程中的线程安全变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2322533/

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