小编Jul*_*ina的帖子

原子载荷可以在C++内存模型中合并吗?

考虑下面的C++ 11片段.对于GCC和clang,这会编译为两个(顺序一致的)foo.C++内存模型是否允许编译器将这两个加载合并到一个加载中并对x和y使用相同的值?

我认为它不能合并这些负载,因为这意味着轮询原子不再起作用,但我找不到内存模型文档中的相关部分.

#include <atomic>
#include <cstdio>

std::atomic<int> foo;

int main(int argc, char **argv)
{
    int x = foo;
    int y = foo;

    printf("%d %d\n", x, y);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ memory-model compiler-optimization language-lawyer stdatomic

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

你如何正确关闭boost :: asio中的套接字?

我试图在boost :: asio中围绕资源管理.我看到相应的套接字已被销毁后调用回调.一个很好的例子是在boost :: asio官方示例中:http://www.boost.org/doc/libs/1_60_0/doc/html/boost_asio/example/cpp11/chat/chat_client.cpp

我特别关注密切的方法:

void close()
{
   io_service_.post([this]() { socket_.close(); });
}
Run Code Online (Sandbox Code Playgroud)

如果调用此函数事后销毁保存socket_ chat_client例如,被称为其上的接近方法之前socket_将被破坏.在chat_client被销毁之后,也可以调用任何挂起的async_*回调.

你怎么能正确处理这个?

c++ sockets boost boost-asio c++11

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

在Google Compute Engine上闲置CPU利用率

Google Developer Console是否有一个原因显示我的闲置Debian Linux VM的CPU利用率为4-5%,即使VM本身声称它是100%空闲的?

google-compute-engine google-cloud-platform

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

Google Compute Engine上的FreeBSD

Google Compute Engine 公告提到了对RHEL,SUSE和FreeBSD的支持.在VM创建时,只有Debian和CentOS可用.是否仍在使用FreeBSD支持,或者我是否需要创建自己的磁盘映像?

freebsd google-compute-engine google-cloud-platform

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

我可以从桌面应用程序使用GAE Cloud Endpoints吗?

我想编写一个与基于GAE的Web服务交互的桌面应用程序.对于Android和Web客户端,可以自动生成客户端库.有没有办法为C或C++生成客户端库?我也愿意接受Python.

google-app-engine google-cloud-endpoints

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

如何将 Nix 包中的 libc 覆盖为 musl?

我使用 Nix 作为 Rust 程序的依赖管理器。我有以下 default.nix (简化,但有效):

rec {
  pkgs = import <nixpkgs> {};

  hello = pkgs.stdenv.mkDerivation rec {
    name = "rust-hello";

    buildInputs = [
      pkgs.rustc
    ];

    src = ./source;

    buildPhase = "rustc main.rs -o rust-hello";
    installPhase = ''
      mkdir -p $out/bin
      install -s rust-hello $out/bin
    '';
  };
}
Run Code Online (Sandbox Code Playgroud)

我试图将所有依赖项(包括 Rust 编译器)的 libc 覆盖为 pkg.musl,但我没有这样做。如何才能实现这一目标?

rust musl nix

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

GCC可以使用读 - 修改 - 写指令来更新volatile变量吗?

假设您有x86系统代码的C代码,如下所示:

volatile uint32_t *reg = (volatile uint32_t *)0xCAFEBABE;
// ...
reg[0x10] |= 1;
Run Code Online (Sandbox Code Playgroud)

GCC可以在这里自由生成读 - 修改 - 写指令吗?如果是这样,将封装读取和写入函数中的volatile变量确保GCC不将访问组合到单个RMW指令中?

我知道C规范对此有意模糊.

c c++ port x86 gcc

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