小编Gra*_*Lup的帖子

Google Test和Visual Studio 2010 RC

有没有人试图在VS 2010 RC下构建gtest 1.4.0
当我尝试构建它时,我得到大约400个错误.提前致谢.

c++ googletest visual-studio-2010

3
推荐指数
1
解决办法
1184
查看次数

同步对变量的访问

我需要为结构的某些成员提供同步.
如果结构是这样的

struct SharedStruct {
    int Value1;
    int Value2;
}
Run Code Online (Sandbox Code Playgroud)

我有一个全局变量

SharedStruct obj;  
Run Code Online (Sandbox Code Playgroud)

我希望从处理器写入

 obj.Value1 = 5; // Processor B
Run Code Online (Sandbox Code Playgroud)

能够立即看到其他处理器,以便在我测试该值时

 if(obj.Value1 == 5) { DoSmth(); } // Processor A
 else DoSmthElse();   
Run Code Online (Sandbox Code Playgroud)

获取新值,而不是缓存中的旧值.
首先,我认为如果我在写/读取值时使用volatile,就足够了.但我读到,挥发性无法解决这类问题.
保证成员在2/4/8字节边界上正确对齐,在这种情况下写入应该是原子的,但我不确定缓存如何干扰它.
使用记忆障碍(mfence,sfence等)就够了吗?或者需要一些互锁操作?
或者类似的东西

lock mov addr, REGISTER  
Run Code Online (Sandbox Code Playgroud)


最简单的显然是一些锁定机制,但速度是至关重要的,无法承受锁:(

编辑
也许我应该澄清一下.该值仅设置一次(表现得像一个标志).所有其他线程只需阅读它.这就是为什么我认为它可能是一种在不使用锁的情况下强制读取这个新值的方法.

提前致谢!

c++ memory parallel-processing multithreading multicore

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

根据内存位置对两个链表进行排序

我需要合并两个双向链表,但不是它们的值(列表没有排序).我想获得一个列表,其中包含两个节点中的所有节点,但按照它们在内存中的显示顺序.

也许这张图片更有帮助:http: //img140.imageshack.us/i/drawing2.png/

有没有可以进行这种合并的算法(最好是快速算法)?也许这有点帮助:

  • 列表的起始节点总是在其他节点之前.
  • 一个列表最多可以有8192个节点.
  • 我知道节点在内存中的位置,因为列表跟踪大块内存中的空闲位置(在内存分配器中使用).
  • 我在C++工作.

提前致谢!

c++ linked-list data-structures

0
推荐指数
1
解决办法
854
查看次数

将可选参数传递给方法而不是计算它的成本

我有一个内存块,它被分成一系列位置,可以通过客户端代码检索和返回.
返回位置的方法如下所示:

void ReturnLocation(void *address) {
    int location = AddressToLocation(address); // I need the location here
    // some code
    DoSmthA(location);
}

void DoSmthA(int location) {
    // I need the address, but also the location
    void *address = LocationToAddress(location); 
    // do something with the address
    DoSmthB(location);
}

void DoSmthB(int location) {
    // Again, I need the address, but also the location
    void *address = LocationToAddress(location);
    // do something with the address
    DoSmthC(location); // It may go on this way...
}

// …
Run Code Online (Sandbox Code Playgroud)

c++ memory optimization performance

0
推荐指数
1
解决办法
200
查看次数