小编Ale*_*ene的帖子

原子操作如何在硬件级别实现?

我在汇编语言级别获得了指令集架构,提供了比较和交换以及类似的操作.但是,我不明白芯片是如何提供这些保证的.

正如我想象的那样,指令的执行必须

  1. 从内存中获取值
  2. 比较价值
  3. 根据比较,可能在内存中存储另一个值

是什么阻止了另一个核心在第一次获取内存地址之后但在设置新值之前访问内存地址?内存控制器是否管理这个?

编辑:如果x86实现是秘密的,我会很高兴听到任何处理器家族如何实现它.

language-agnostic x86 smp atomicity

36
推荐指数
2
解决办法
9190
查看次数

使用C++ 11线程初始化非const引用无效?

我收到一个错误

错误:从'int'类型的右值开始,无效初始化'int&'类型的非const引用

从

#include <thread>
#include <iostream>

using namespace std;

void func(int& i){
    cout<<++i<<endl;
}

int main(){
    int x=7;
    thread t(func,x);
    t.join();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我明白我做不到thread(func, 4)但是x变量,不是暂时的.

我正在使用gcc 4.7和-std = c ++ 11 -pthread

为什么会出现此错误?

c++ c++11

18
推荐指数
2
解决办法
3964
查看次数

使用unique_ptr <>实现列表?

据我了解,这unique_ptr表示独家所有权.一个单链表似乎适合这个,每个节点拥有下一个,如(pseduocode alert)

class node{
public:
      unique_ptr<node> next;
      int value;
};
Run Code Online (Sandbox Code Playgroud)

但我不明白如何执行操作,如遍历列表,我过去常常这样做

here=here->next;
Run Code Online (Sandbox Code Playgroud)

你如何使用unique_ptr's 实现数据结构?它们是适合这项工作的工具吗?

c++ smart-pointers c++11

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

标签 统计

c++ ×2

c++11 ×2

atomicity ×1

language-agnostic ×1

smart-pointers ×1

smp ×1

x86 ×1