stable_clock 在线程之间是单调的吗?

2023-11-23

的单调性质是std::chrono::steady_clock跨线程保存?例如,假设我有以下程序。

#include <chrono>
#include <mutex>
#include <thread>

using namespace std;
using namespace chrono;

mutex m;
int i = 0;

void do_something(int &x) {
  x += 1;
}

void f1() {
  unique_lock<mutex> lock(m);
  auto time = steady_clock::now();
  do_something(i);
}

void f2() {
  unique_lock<mutex> lock(m);
  auto time = steady_clock::now();
  do_something(i);
}

int main() {
  thread t1(f1);
  thread t2(f2);
  t1.join();
  t2.join();
  return 0;
}

我可以假设具有较小的线程time最后的值(假设它们有不同的值)修改i在对方之前并且对方看到i因为它是第一个留下的?


标准[时间.时钟.稳定]

...
static constexpr bool is_steady = true;
static time_point now() noexcept;
...  

is_steady 在所有实现中都必须为 true(即,如果操作系统等不支持该类,则该类不能以 false 存在),并且两个成员都独立于实例。

标准[time.clock.req]:

时钟要求
...
C1和C2表示时钟类型。 t1 和 t2 是 C1::now() 返回的值,其中返回 t1 的调用发生在之前(1.10)返回 t2 的调用并且这两个调用都发生在 C1::time_-point::max() 之前。
...
C1::is_steady:如果 t1

1.10部分包含:

多线程执行和数据竞争
...
如果满足以下条件,则评估 A 在评估 B 之前发生:
A 在 B 之前排序,或者
A 线程间发生在 B 之前。
...
评估 A 线程间发生在评估 B 之前,如果
A 同步与 B,或 ...

我认为不需要在这里复制同步(互斥体应该足以满足这一点),
so: Yes, 没关系。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

stable_clock 在线程之间是单调的吗? 的相关文章

随机推荐

  • IOS5 setBrightness 不适用于 applicationWillResignActive

    I use UIScreen mainScreen setBrightness 在 sdk 5 0 中 更改我的应用程序中的系统背景光 以下步骤适用于我的应用程序 激活应用程序 将系统亮度设置为默认值 然后另存为sysBright 使用我的
  • 混合触发器与 WPF 触发器

    在我看来 Blend 风格和 Blend 风格之间有很大的区别 Trigger可以在 Interactivity 命名空间中找到 经典的Trigger可通过样式获得 ControlTemplates 等 在 WPF 中 我想这可能也适用于
  • 刷新缓冲区是什么意思?

    我正在学习C 我发现一些我无法理解的东西 可以显式刷新输出缓冲区以强制缓冲区 书面 默认情况下 读取cin脸红cout cout也被冲得通红 当程序正常结束时 因此 刷新缓冲区 例如输出缓冲区 是通过删除缓冲区中的所有内容来清除缓冲区 还是
  • 如何查看运行状态并停止耐用功能

    我想按需处理数百万条记录 处理时间大约需要 2 3 小时 我想要无服务器 这就是为什么尝试持久功能 第一次 我想检查一下 我可以运行持久函数多长时间 所以我创建了 3 个函数 用于启动 Orchestrator 功能的 Http 函数 Or
  • 在 Spark/Jetty-server 中重新加载静态文件

    我在这里描述了一个有点类似的问题 刷新 SparkJava 提供的静态文件 在我的应用程序中 用户可以将内容上传到一个文件夹 该文件夹也提供给用户 Spark staticFileLocation public 特征 据我所知 SparkJ
  • Github webhooks - 预推送挂钩

    我的要求是 每当开发人员推送到 github 时 在推送之前应该在 Jenkins 服务器上触发 CI 构建 如果构建失败 则应拒绝推送到 github 我需要为此编写挂钩 但我不想编写客户端挂钩 因为开发人员可以禁用它们 我想要服务器端
  • PHP - error_reporting 不起作用

    我的网络托管提供商不提供启用错误报告的选项 所以尝试使用 error reporting E ALL 但这也行不通 我尝试了以下脚本 如果我正确阅读了手册 那么这应该会生成错误通知 但这也行不通 我是否做错了什么 或者这是获得新的网络托管提
  • 在 Scala 中重载通用事件处理程序

    如果我定义以下通用事件处理程序 trait Handles E lt Event def handle event E 事件类型如下 trait Event class InventoryItemDeactivated val id UUI
  • 使用自定义标头获取 GET 请求?

    我正在尝试向 API 发送 GET 请求 但是当我在代码中添加自定义标头时 会发生一些奇怪的事情 当请求方法到达 Web 服务器时 某个地方会更改为 OPTIONS 但是当我在没有标头的情况下执行相同操作时 它将是 GET 类型 当我使用应
  • 使用 Pdf.js 突出显示 pdf 中的一个部分

    我目前在我的项目中使用 pdf js 来渲染 PDF 现在有一项棘手的任务 即在给定坐标的情况下突出显示 PDF 页面的一部分 Example 给定一个边界部分 例如 31 35 40 35 40 40 31 40 我应该用任何选择的原色来
  • Rails 3 和 Devise:注册后重定向到页面(可确认)

    我有一个带有 Devise 的 Rails 3 项目 启用了可确认功能 因此用户必须在注册后通过电子邮件确认其帐户 目前该项目将用户返回到登录页面并抛出 您已成功注册 通知 我想做的是将他们重定向到 谢谢 页面 并提供进一步的说明 检查您的
  • 您将如何将站点从 Prototype 切换到 jQuery

    我已经用 Prototype 编写了一个网站 但想切换到 jQuery 关于如何最好地进行转换有什么想法吗 就我个人而言 我喜欢分步进行 所以我会从使用两者开始 如下所示 jQuery noConflict Put all your cod
  • 在 Kotlin 中,如何使属性只能由特定类型访问

    假设我有一个与此类似的 Kotlin 类 class MyKotlinExample val mMyString MutableLiveData
  • 如何检查每个用户会话正在运行的进程?

    我有一个 NET 应用程序 我只允许一次运行一个进程 但是该应用程序有时会在 Citrix 机器上使用 因此可以由同一台计算机上的多个用户运行 我想检查并确保该应用程序在每个用户会话中仅运行一次 因为现在如果用户 A 正在运行该应用程序 则
  • 有效、简洁的方法来找到下一个匹配的兄弟姐妹?

    坚持官方的 jQuery API 除了使用之外 是否有一种更简洁但效率不低的方法来查找与给定选择器匹配的元素的下一个同级元素nextAll与 first伪类 当我说官方 API 时 我的意思是不要破解内部结构 直接使用 Sizzle 在组合
  • 将 UITableview 数据源和委托与主 UIViewController 类分开的简单方法?

    典型的 UITableView 使用模式是让主 UIViewController 成为它所持有的 UITableView 的目标数据源和委托 是否有任何简单易懂的教程可以帮助我弄清楚如何将与 UITableViewDelegate 和 UI
  • 之间的区别?和 !用斯威夫特语言? [复制]

    这个问题在这里已经有答案了 我在网上阅读了很多文章并预订了 Apple 但我无法找出之间的区别 和 Swift 语言中的运算符 override func tableView tableView UITableView cellForRow
  • C++/WIN32 看起来很专业的应用程序 - 真的可能吗?

    我一直在到处寻找关于如何发布具有当今 高端 外观的应用程序的良好解决方案 技巧 众所周知 当使用 Windows 进行编码时 我们通常会得到 Windows 风格的颜色 按钮 列表等 它们只是看起来和感觉都很丑 当我们决定要出售应用程序时
  • 确定当前应用程序是否已激活(具有焦点)

    注意 有一个非常相似的问题 但它是 WPF 特定的 这个不是 如何确定当前应用程序是否已激活 即具有焦点 这有效
  • stable_clock 在线程之间是单调的吗?

    的单调性质是std chrono steady clock跨线程保存 例如 假设我有以下程序 include