Concurrency 当两个进程试图同时读取系统时钟时,是否存在争用条件?

Concurrency 当两个进程试图同时读取系统时钟时,是否存在争用条件?,concurrency,parallel-processing,race-condition,real-time-clock,Concurrency,Parallel Processing,Race Condition,Real Time Clock,我有两个进程(不是线程)应该同时读取系统时钟。为此,第一个过程使用 QTime::currentTime()只有一种竞争条件,即您无法预测哪个进程将报告更早的时间,或者它们是否将报告相同的时间。同时(几乎)读取时钟不会造成任何伤害。这两份报告将在操作系统提供信息的能力范围内准确无误。根据操作系统和硬件的不同,两个进程可能同时报告,也可能不同时报告 它可能是也可能不是共享资源。它甚至可能不是引擎盖下的同一个时钟std::chrono::high_resolution_clock通常是typede

我有两个进程(不是线程)应该同时读取系统时钟。为此,第一个过程使用


QTime::currentTime()只有一种竞争条件,即您无法预测哪个进程将报告更早的时间,或者它们是否将报告相同的时间。同时(几乎)读取时钟不会造成任何伤害。这两份报告将在操作系统提供信息的能力范围内准确无误。根据操作系统和硬件的不同,两个进程可能同时报告,也可能不同时报告

它可能是也可能不是共享资源。它甚至可能不是引擎盖下的同一个时钟
std::chrono::high_resolution_clock
通常是
typedef
std::chrono::Standy_clock
std::chrono::system_clock
的一种类型,它是哪种类型因平台而异。在macOS/iOS/watchOS上,高分辨率时钟是一种从
typedef
stable\u clock
的时钟,自系统启动后计数纳秒。此度量与一天中的时间或日历上的日期没有关系


有一个关于
稳定时钟
系统时钟
之间差异的描述,只有一个竞态条件,即您无法预测哪个进程将报告较早的时间,或者它们是否报告相同的时间。同时(几乎)读取时钟不会造成任何伤害。这两份报告将在操作系统提供信息的能力范围内准确无误。根据操作系统和硬件的不同,两个进程可能同时报告,也可能不同时报告

它可能是也可能不是共享资源。它甚至可能不是引擎盖下的同一个时钟
std::chrono::high_resolution_clock
通常是
typedef
std::chrono::Standy_clock
std::chrono::system_clock
的一种类型,它是哪种类型因平台而异。在macOS/iOS/watchOS上,高分辨率时钟是一种从
typedef
stable\u clock
的时钟,自系统启动后计数纳秒。此度量与一天中的时间或日历上的日期没有关系


这里有一个关于
稳定时钟
系统时钟

之间区别的描述,你是如何协调这两个过程来尝试同时阅读的?@jingx我编辑了我的帖子来回答你的问题这与通常所说的比赛条件无关,例如,一个进程必须等待另一个进程释放资源。这简单地证明了在同一时间观察两个事件是不可能的,而准确的时间是由现代计算机时钟的分辨率来定义的。让我们同意,明确和可重复的MCVE公式化实验是一种方法,而不是模糊的、固执己见的假设——比说更好“我想可能会有……”定义一个测试,也许是在一个通用的平台上编写的——比如on或类似的on(那里有680多种编译/解释语言)——我们都开始有一个共同点来测试{[通过]|[失败]}-设想并推动针对原始问题的任何改进解决方案——这是公平的,既可以重复,又可以量化,不是吗?你如何协调这两个过程,以尝试在完全相同的时间开始阅读?@jingx我编辑了我的帖子来回答你的问题这与通常所说的比赛条件无关,例如,一个进程必须等待另一个进程来释放资源。这简单地证明了在完全相同的时间观察两个事件是不可能的,而这正是由现代计算机时钟的分辨率定义的。让我们同意,明确和可重复的MCVE公式化实验是一种可行的方法,而不是模糊的opini各种假设——比说“我想可能会有……”要好得多——定义一个测试——也许是在一个通用的平台上编码的——比如on或类似的on(有680多种编译/解释语言)——我们都开始有一个共同点来测试{[通过]|[失败]}-设想并推广针对原始问题的任何改进的解决方案——这是公平的,既可以重复,又可以量化,不是吗?