小编syk*_*yko的帖子

C++ 11使用<atomic>实现Spinlock

我实现了SpinLock类,如下所示

struct Node {
    int number;
    std::atomic_bool latch;

    void add() {
        lock();
        number++;
        unlock();
    }
    void lock() {
        bool unlatched = false;
        while(!latch.compare_exchange_weak(unlatched, true, std::memory_order_acquire));
    }
    void unlock() {
        latch.store(false , std::memory_order_release);
    }
};
Run Code Online (Sandbox Code Playgroud)

我实现了上面的类,并创建了两个线程,每个线程调用一个相同的Node类实例的add()方法1000万次.

不幸的是,结果不是2000万.我在这里错过了什么?

c++ multithreading c++11

30
推荐指数
2
解决办法
3万
查看次数

RabbitMQ如何实际存储消息?

我想知道RabbitMQ如何将消息物理地存储在其RAM和磁盘中?

我知道RabbitMQ试图将消息保存在内存中(但我不知道消息是如何放入Ram的).但是当消息处于持久模式或代理具有内存压力时,消息可能会溢出到磁盘中.(但我不知道消息是如何存储在磁盘中的.)

我想知道关于这些的内部情况.不幸的是,其主页上的官方文档没有公开内部细节.

我应该阅读哪个文件?

rabbitmq

25
推荐指数
1
解决办法
1万
查看次数

如果多个类有一个共同的静态变量,它们是否共享(在同一范围内?)

我有以下示例代码:

class A {
    public:
        static int a;
};
int A::a = 0;

class B {
    public:
        static A a1;
};
A B::a1;

class C {
    public:
        static A a1;
};
A C::a1;


int main(int argc, const char * argv[]) {
    C::a1.a++;
    B::a1.a++;
    std::cout << B::a1.a << " " << C::a1.a << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

B类和C类将A类作为静态成员变量.

我希望程序打印"1 1",但它打印"2 2".

如果多个类有一个共同的静态变量,它们是否共享(在同一范围内?)

c++ static static-members

21
推荐指数
2
解决办法
2065
查看次数

C++程序崩溃与EXIT CODE:9(SIGKILL)

我的应用程序崩溃了EXIT CODE:9(SIGKILL)

我从来没有运行任何可以杀死正在运行的进程的命令,例如'kill -9(pid)'或'pkill(进程名)'.

在这种情况下我应该从哪里开始调试?

  1. 我试图在程序崩溃时转储堆栈跟踪,但我发现无法捕获SIGKILL进行错误处理.

  2. 该程序使用MPI并在群集环境中运行.它运行大约1小时后就会死亡.

是否存在可能导致SIGKILL异常的常见原因?

(它在linux上运行;分为os 7)

c++ error-handling

13
推荐指数
1
解决办法
2万
查看次数

如何测量特定线程集的CPU时间?

我在Linux中运行C++程序.

有几个线程池(用于计算,用于io,用于......这样的事情).

系统调用clock()为我提供了一种方法来测量所有CPU内核为进程花费的CPU时间.

但是,我想测量仅由计算线程池中的线程花费的CPU时间.

我怎样才能实现它?

感谢:D

c++ linux performance multithreading measure

8
推荐指数
1
解决办法
1678
查看次数

如何使用CLion在Docker容器中编码/运行程序?

我是CLion的新手

我发现CLion支持Docker。我要执行以下操作:

(Refer my Linux OS as A.)
(Refer the docker container within A as B.)


The library and environments are set up in B.
The CLion IDE is running in A.
I want to code/debug the program that runs in B using the IDE in A. 
Run Code Online (Sandbox Code Playgroud)

这是CLion支持的功能吗?我阅读了他们的文档,但找不到解决方法

谢谢

docker clion

7
推荐指数
1
解决办法
2079
查看次数

C ++中的__builtin__函数是什么?

我正在调试性能敏感的事务处理系统。

我找到了一个使用__builtin_memcpy和__builtin_memset而不是memcpy和memset的代码。

__builtin_functions有什么用?,以防止对体系结构或编译器的依赖性问题?

或者..是否有任何性能上的原因偏爱__builtin_functions?

谢谢你:D

c++ compilation

4
推荐指数
1
解决办法
2405
查看次数

当 RDMA 在 mmaped 区域上运行时会发生什么?

RDMA 是绕过应用程序和操作系统内核之间无用数据副本的有效方法。Mmap 是一种处理大文件的有效方法,就好像它只是一个字节数组。

我正在通过 Infiniband 使用 MPI,它支持进程之间的 RDMA 网络操作。每个 MPI 进程都有一个非常大的文件要与其他人共享。

每个 MPI 进程可以在每个大文件上创建 mmap 区域并与其他人共享吗?我想允许每个进程读取任何进程的任何文件,就好像它通过 RDMA(MPI 的单面通信)读取它们的内存一样。

据我所知,当应用程序调用 RDMA 操作时,它会直接将“虚拟内存地址”传递给 NIC。NIC 将处理从虚拟内存地址到其物理内存地址的转换。如果 RDMA 驱动程序在向 NIC 发出请求之前固定感兴趣的页面,我认为它会起作用。有没有人有这方面的经验?:D

谢谢

c++ operating-system mpi rdma

4
推荐指数
1
解决办法
763
查看次数

两个已排序列表的交集最快的算法是什么?

假设有两个排序列表:A和B。

A和B中的条目数可以变化。(它们可以很小/很大。它们可以彼此相似/明显不同)。

什么是最快的用于此功能的算法?

谁能给我一个想法或参考?

algorithm

4
推荐指数
1
解决办法
914
查看次数

如何知道Spark是以独立模式运行还是在Yarn上运行?

在我的集群服务器中,Spark已经部署完毕.(有人设置了ip并且很久以前离开了)

我想知道Spark是以独立模式运行还是在Yarn上运行.

我怎么检查呢?

apache-spark

4
推荐指数
1
解决办法
2552
查看次数