使用VS2017
我正在尝试使用 std::shared_timed_mutex ,特别是成员函数 try_lock_for 。我试图将超时指定为 100 毫秒。
现在在 Alan Birtles 的帮助下进行编辑。我现在有
#include <chrono> // for std::chrono
#include <shared_mutex> // for std::shared_timed_mutex
#include <iostream> // for std::cerr
static std::shared_timed_mutex SHMutex;
void testfunc()
{
using duration2 = std::chrono::duration<_int64, std::milli>;
// WAS using duration2 = std::chrono::duration<_int64, std::chrono::milliseconds>;
const duration2 dur(100);
if (!SHMutex.try_lock_for(dur))
std::cerr << "Lock failure for SHMutex" << '\n';
}
Run Code Online (Sandbox Code Playgroud)
无论我做什么,Visual Studio 都会抱怨 dur 实例化错误的编译错误。我必须做什么才能使其正常工作?
编译错误现在为零。艾伦·伯特尔斯的回答改变了一切
using duration2 = std::chrono::duration<_int64, std::chrono::milliseconds>;
Run Code Online (Sandbox Code Playgroud)
没有意义,第二个模板参数duration是一个比率,但是std::chrono::milliseconds是一个持续时间。使用以下任一方法:
using duration2 = std::chrono::duration<_int64, std::milli>;
Run Code Online (Sandbox Code Playgroud)
或者更简单:
using duration2 = std::chrono::milliseconds;
Run Code Online (Sandbox Code Playgroud)
在大多数平台上这将是类似的(定义的表示std::chrono::milliseconds参见signed integer type of at least 45 bitshttps://en.cppreference.com/w/cpp/chrono/duration )
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |