小编Fro*_*art的帖子

MS特定的volatile是否会阻止硬件指令重新排序

文档:

微软特定

当使用/ volatile:ms编译器选项时 - 默认情况下,当ARM以外的体系结构成为目标时 - 除了维护对其他全局对象的引用的排序之外,编译器还生成额外的代码来维护对volatile对象的引用之间的排序.特别是:

  • 对volatile对象的写入(也称为volatile write)具有Release语义; 也就是说,
    在写入指令
    序列中的易失性对象之前发生的对全局或静态对象的引用将在编译
    二进制文件中的易失性写入之前发生.
  • 读取volatile对象(也称为volatile读取)具有Acquire语义; 也就是说,
    在读取指令
    序列中的易失性存储器之后发生的对全局或静态对象的引用将在编译二进制文件中的易失性读取之后发生.

这使得volatile对象可用于多线程应用程序中的内存锁定和释放.

它肯定能保证volatile阻止编译器重新编译编译时指令(因为它明确指出编译二进制文件中的指令序列是相同).

但是众所周知,还有像硬件重新排序这样的东西(比如CPU可以自己重新排序指令).是否也volatile能阻止它?我知道同步原语(如互斥体)可以,但MS特定的volatile呢?

c++ multithreading volatile memory-fences visual-c++

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

在操作方法中使用 await-async 是否有任何实际好处

这有什么实际好处吗

public async Task<IActionResult> Index()
{
    return View(await _context.Movie.ToListAsync());
}
Run Code Online (Sandbox Code Playgroud)

在这个

public IActionResult Index()
{
    return View(_context.Movie.ToList());
}
Run Code Online (Sandbox Code Playgroud)

?

如果我们使用后一种代码,服务器会浪费时间吗?

c# asp.net asp.net-core

5
推荐指数
0
解决办法
83
查看次数

违反ASP.NET Core中的Authorize属性的默认行为是什么

Authorize在ASP.NET Core 中违反该属性的默认行为是什么?

[Authorize(Roles = "Administrator")]
public ActionResult ShutDown()
{

}
Run Code Online (Sandbox Code Playgroud)

它似乎重定向到/Account/AccessDenied如果用户没有足够的权限,/Account/Login如果用户还没有登录.

我对吗?

我在文档中没有看到任何关于它的内容.

c# asp.net asp.net-core

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

我需要在头文件和源文件中指定调用约定吗

我需要在头文件和源文件中指定调用约定吗?

例如,

头文件.h

void __cdecl Foo();
Run Code Online (Sandbox Code Playgroud)

源代码.cpp

void __cdecl Foo()
{
}
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++ language-lawyer

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

宏中的附加逗号

带有C++宏的可选参数

为什么此线程中的一条消息的作者在宏中使用了额外的逗号?

#define PRINT_STRING_MACRO_CHOOSER(...) \
    GET_4TH_ARG(__VA_ARGS__, PRINT_STRING_3_ARGS, \
                PRINT_STRING_2_ARGS, PRINT_STRING_1_ARGS, )
Run Code Online (Sandbox Code Playgroud)

c c++

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

在C和C++中反斜杠后的空白字符

反斜杠后C和C++标准对空白字符(或几个字符)的说法是什么?它是否保证无论如何加入线路?

int main()
{
    // Comment \ 
    int foo;
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,MSVC和gcc的工作方式不同.

c c++

4
推荐指数
2
解决办法
1336
查看次数

字符串作为模板参数

虽然C++标准不允许使用字符串文字作为模板参数,但允许这样的事情:

ISO/IEC 14882:2011

14.3.2模板非类型参数[temp.arg.nontype]

2 [注意:字符串文字(2.14.5)不满足任何这些类别的要求,因此不是可接受的模板参数.[例如:

template<class T, const char* p> class X { / ... / };

X<int, "Studebaker"> x1; // error: string literal as template-argument

const char p[] = "Vivisectionist";
X<int,p> x2; // OK

- 末端示例] - 尾注]

那么为什么以下代码在所有编译器中都会出错(gcc 4.7.2,MSVC-11.0,Comeau)?

template <const char* str>
void foo() {}

int main()
{
   const char str[] = "str";
   foo<str>();
}
Run Code Online (Sandbox Code Playgroud)

c++

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

我可以使用boost asio来处理HTTPS请求

我可以使用boost asio进行HTTPS请求吗?我可以发出GET和POST HTTP请求,但是HTTPS呢?我该怎么处理?有人可以给我一个代码片段吗?

c++ https boost http boost-asio

4
推荐指数
2
解决办法
807
查看次数

提升融合和提升qi - 编译时错误

我无法编译以下代码:

#include <boost/fusion/include/adapt_struct.hpp>
#include <boost/spirit/include/qi.hpp>

#include <string>

struct function
{
  std::string ret_type;
  std::string name;
};

BOOST_FUSION_ADAPT_STRUCT(
  function,
  (std::string, ret_type)
  (std::string, name)
)

int main() {}
Run Code Online (Sandbox Code Playgroud)

带有boost 1.54的MSVC-11.0给出了以下错误:

1>main.cpp(6084): error C3203: 'function' : unspecialized class template can't be used as a template argument for template parameter 'Sequence', expected a real type
1>main.cpp(6084): error C2955: 'boost::function' : use of class template requires template argument list
1>          e:\libs\boost_1_54_0\boost\function\function_fwd.hpp(33) : see declaration of 'boost::function'
1>main.cpp(6084): error C2913: explicit specialization; 'boost::fusion::traits::tag_of' is not a specialization …
Run Code Online (Sandbox Code Playgroud)

c++ boost

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

我可以通过Python中的splinter模块以某种方式从页面上的下拉列表中选择特定元素

我可以通过Python中的splinter模块以某种方式从页面上的下拉列表中选择特定元素吗?

我有以下HTML代码:

<select id="xyz">
   <optgroup label="Group1">
      <option value="1">pick1</option>
      <option value="2">pick2</option>
   </optgroup>
   <optgroup label="Group2">
       <option value="3">pick3</option>
       <option value="4">pick4</option>
   </optgroup>
</select>
Run Code Online (Sandbox Code Playgroud)

假设我需要选择"pick3"选项.我该怎么做?

html python testing splinter

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