标签: system-clock

为什么CLOCKS_PER_SEC不是每秒的实际时钟数?

我刚刚编写了这个简短的C++程序来估算每秒钟的实际时钟周期数.

#include <iostream>
#include <time.h>

using namespace std;

int main () {

    for(int i = 0; i < 10 ; i++) {

        int first_clock = clock();
        int first_time = time(NULL);

        while(time(NULL) <= first_time) {}

        int second_time = time(NULL);
        int second_clock = clock();

        cout << "Actual clocks per second = " << (second_clock - first_clock)/(second_time - first_time) << "\n";

        cout << "CLOCKS_PER_SEC = " << CLOCKS_PER_SEC << "\n";

    }

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

当我运行程序时,我得到的输出看起来像这样.

Actual clocks per second = 199139
CLOCKS_PER_SEC = …
Run Code Online (Sandbox Code Playgroud)

c++ clock system-clock

25
推荐指数
3
解决办法
5万
查看次数

首次启动时间

我正在开发一个Android应用程序并通过确定系统首次启动时间来解决问题.我的意思是我需要测量设备首次启动时已经过了多少时间.

我知道有关侦听ACTION_BOOT_COMPLETED的解决方案并在SharedPreferences中保存任何内容,但我需要另一个解决方案,因为这个解决方案在某些情况下不起作用.也许有任何系统属性?

用例(摘自讨论)

  1. 我从服务器收到的每个文件的文件名都包含一个时间戳 System.currentMillis()
  2. 我比较这些时间戳,以确定哪个文件是最新的文件.
  3. 现在,用户提前几个月更改系统时间.
  4. 我仍然能够确定用户更改系统时间后下载的最新文件.
  5. 现在,用户将时间更改回原始设置.
  6. 在比较时间戳时,在步骤4下载的文件总是获胜.

解决这个问题的银弹将是一个时间戳,它计算自首次启动(出厂重置后)后的秒数.就像SystemClock.elapsedRealtime()每次启动后没有重置一样.不幸的是,到目前为止的答案告诉我们,这个银弹不存在.

但是,许多答案显示了如何解决这个问题的各种选择.OneWorld123评论了每个答案,如何满足他的需求.

java time android clock system-clock

22
推荐指数
2
解决办法
2342
查看次数

JavaScript setTimeout和系统时间的更改会导致问题

我注意到如果我setTimeout将来设置为1分钟,然后将系统时间更改为过去的5分钟,则该setTimeout功能将在6分钟内触发.

我这样做是因为我想看看在夏令时改变系统时钟时会发生什么.

我的JavaScript网页使用一个setTimeout功能每5秒自动刷新页面,如果发生夏令时,页面信息将冻结一小时.有解决方法吗?

编辑:我正在使用Ajax更新页面,我不想刷新整个页面.

javascript settimeout system-clock

20
推荐指数
1
解决办法
3142
查看次数

在使用亚马逊的EC2服务来对抗时钟漂移时,我应该使用NTP服务器吗?

我正在使用AWS并且我在EC2服务器上......

[dalvarado@mymachine ~]$ uname -a
Linux mydomain.org 3.14.33-26.47.amzn1.x86_64 #1 SMP Wed Feb 11 22:39:25 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

尽管我已经安装并运行了NTPD,但我的时钟已经关闭了一分钟

[dalvarado@mymachine ~]$ sudo service ntpd status
ntpd (pid  22963) is running...
Run Code Online (Sandbox Code Playgroud)

它会出现ntp数据包被阻止或存在其他问题,因为我收到此错误...

[dalvarado@mymachine ~]$ sudo ntpdate pool.ntp.org
 2 Apr 16:43:50 ntpdate[23748]: no server suitable for synchronization found
Run Code Online (Sandbox Code Playgroud)

有没有人知道AWS是否有另一台服务器我应该联系NTP信息,或者我还需要其他其他配置吗?

谢谢, - 戴夫

编辑:包括评论的输出...

[dalvarado@mymachine ~]$ sudo ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 173.44.32.10    .INIT.          16 u    - 1024    0    0.000    0.000   0.000 …
Run Code Online (Sandbox Code Playgroud)

time amazon-ec2 ntp amazon-web-services system-clock

18
推荐指数
3
解决办法
2万
查看次数

以编程方式设置Android的日期/时间

我需要以编程方式从Android设置日期/时间,但我没有成功!我有以上这三个来源:

源代码1

AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);  
alarm.setTime(1330082817000); 
Run Code Online (Sandbox Code Playgroud)

AndroidManifest:

<uses-permission android:name="android.permission.SET_TIME" />  
<uses-permission android:name="android.permission.SET_TIME_ZONE" />  
Run Code Online (Sandbox Code Playgroud)

例外:

Service fatal error : Unable to start activity ComponentInfo{br.com.tdta.service/br.com.tdta.service.Service}: java.lang.SecurityException: setTime: Neither user 10038 nor current process has android.permission.SET_TIME.  
java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.tdta.service/br.com.tdta.service.Service}: java.lang.SecurityException: setTime: Neither user 10038 nor current process has android.permission.SET_TIME.  
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)  
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)  
    at android.app.ActivityThread.access$2300(ActivityThread.java:125)  
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)  
    at android.os.Handler.dispatchMessage(Handler.java:99)  
    at android.os.Looper.loop(Looper.java:123)  
    at android.app.ActivityThread.main(ActivityThread.java:4627)  
    at java.lang.reflect.Method.invokeNative(Native Method)  
    at java.lang.reflect.Method.invoke(Method.java:521)  
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)  
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)  
    at dalvik.system.NativeStart.main(Native Method)  
Caused by: java.lang.SecurityException: …
Run Code Online (Sandbox Code Playgroud)

java android system-clock

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

在等待std :: condition_variable时如何处理系统时钟更改?

我正在尝试在C++ 11中实现一些跨平台代码.此代码的一部分使用std :: condition_variable实现信号量对象.当我需要在信号量上进行定时等待时,我使用wait_until或wait_for.

我遇到的问题是,似乎基于POSIX的系统上的 condition_variable的标准实现依赖于系统时钟,而不是单调时钟(另请参阅:针对POSIX规范的此问题)

这意味着如果系统时钟在过去的某个时间发生变化,我的条件变量将阻塞的时间比我预期的要长得多.例如,如果我希望我的condition_variable在1秒后超时,如果有人在等待期间将时钟调整回10分钟,则condition_variable会阻塞10分钟+ 1秒.我已经确认这是Ubuntu 14.04 LTS系统上的行为.

我需要依赖这个超时至少有些准确(即,在某些误差范围内它可能是不准确的,但如果系统时钟发生变化仍然需要执行).看起来我需要做的就是编写我自己的condition_variable版本,该版本使用POSIX函数并使用单调时钟实现相同的接口.

这听起来像很多工作 - 而且有点混乱.还有其他解决此问题的方法吗?

c++ time condition-variable system-clock c++11

14
推荐指数
2
解决办法
1255
查看次数

Lamport同步算法讨论中的“偏序”和“全序”是什么意思?

我的理解是,部分排序和全排序是两组规则。

偏序具有三个规则:
(1) 如果 a 和 b 是同一进程中的两个事件,并且 a 在 b 之前,则 a->b。
(2) ...
(3) ...

那么什么是全序呢?

为何如此命名?

algorithm synchronization distributed-computing system-clock

11
推荐指数
1
解决办法
5949
查看次数

C语言中clock()函数的准确性

我有一些代码试图确定代码块的执行时间.

#include <time.h>
#include <stdio.h>

int main()
{
   clock_t start_t, end_t, total_t;
   int i;

   start_t = clock(); //clock start
   printf("Starting of the program, start_t = %ld\n", start_t);

   printf("Going to scan a big loop, start_t = %ld\n", start_t);
   for(i=0; i< 10000000; i++)  //trying to determine execution time of this block
   {
   }
   end_t = clock(); //clock stopped
   printf("End of the big loop, end_t = %ld\n", end_t);

   total_t = (long int)(end_t - start_t);
   printf("Total time taken by CPU: %lu\n", total_t  );

   return(0); …
Run Code Online (Sandbox Code Playgroud)

c time clock system-clock

8
推荐指数
1
解决办法
3075
查看次数

在Node.js中单调增加时间

这个问题已经回答为Javascript 这里,但window.performance.now()显然是不提供Node.js的

某些应用需要一个稳定的时钟,即一个随时间单调增加的时钟,不受系统时钟漂移的影响.例如,Java有System.nanoTime()和C++有std::chrono::steady_clock.Node.js中有这样的时钟吗?

javascript node.js system-clock

8
推荐指数
1
解决办法
959
查看次数

6
推荐指数
1
解决办法
8342
查看次数