1. 程式人生 > >工作問題積累(二十一)C++ GetTickCount()

工作問題積累(二十一)C++ GetTickCount()

函式的返回型別是DWORD,函式本身功能:返回OS開啟在現在所經過的毫秒數(ms).

DWORD GetTickCount();

//函式的返回型別是DWORD,函式本身功能:返回OS開啟在現在所經過的毫秒數(ms).

 long now = GetTickCount();
    if (m_nTickRoomInfo != 0 && (now - m_nTickRoomInfo >= 60000)) 
	{
        m_nTickRoomInfo = now;
        CCLog("Update ObtainRoomInfo");
        HttpInvoke::ObtainRoomInfo();
    }


用處:(1.)

判斷某個方法被呼叫的時間間隔。

 long now = GetTickCount();
 if (m_nTickRoomInfo != 0 && (now - m_nTickRoomInfo >= 60000)){
     m_nTickRoomInfo = now;
     CCLog("Update ObtainRoomInfo");
     HttpInvoke::ObtainRoomInfo();
 }

用處:(2.)

隨機數的生成。srand(::GetTickCount());

不過這種隨機數生成有個問題:往往會產生偽隨機,兩次執行之間時間間隔非常短,裡面會有很多數字重複。

srand(::GetTickCount());
for(int i = 0 ;i < 100 ;++i)
{
      int m_nrand = rand();
}

解決辦法:

srand((unsigned int)GetCpuCycle());
int x = rand() % 9 + 1; //獲取1-9之間的一個隨機數


//獲得CPU自上電以來的時間週期數
__declspec (naked) unsigned __int64 GetCpuCycle()
{
 _asm
 {
  rdtsc
  ret
 }
}

上面獲得時間週期數的程式碼是組合語言所寫,可放到所使用檔案的最上面。

相關推薦

工作問題積累C++ GetTickCount()

函式的返回型別是DWORD,函式本身功能:返回OS開啟在現在所經過的毫秒數(ms). DWORD GetTickCount(); //函式的返回型別是DWORD,函式本身功能:返回OS開啟在現在所經過的毫秒數(ms). long now = GetTickCount

C之 #error 和 #line

C語言 #error #line 我們今天來講下 C 語言中的兩個比較偏僻的知識點,之所以說偏僻是因為在平時的代碼中我們見得很少。首先來說下 #error,它是用於生成一個編譯錯誤消息。用法如下:#error message;註意 message 不需要用雙引號包圍。#error

C++ — 引用概念及本質

color 概念 調用 main 字節 sizeof 一個 strong 操作 1、引用概念   引用是別名,必須在聲明的時候初始化。即:是指一個已定義變量的別名。(一個內存空間,有兩個名字都可以操作)   引用:在函數調用時,是變量的別名,不可以單獨存在,使用時必須要

C++設計模式—中介者模式

中介者模式 用一箇中介物件來封裝一系列的物件互動。中介者使個各物件不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。 本文講解中介者模式框架,程式碼使用C++語言描述,程式碼存在的不足或問題有望各位指出。 中介者模式程式碼框

SQL語句—— 觸發器DML觸發器

cti lock dml set sql語句 事件 check約束 服務 expand 觸發器 一 、觸發器概述(特殊的存儲過程) 定義: 在修改指定表值的數據時執行的 存儲過程. 不同的是 : 執行存儲過程要使用EXEC語句來調用,而觸發器的執行不需要使用EX

Android學習路線運用Fragment構建動態UI——創建一個Fragment

動態 app idt 文檔 部分 roi 現實 調用 android學習 你能夠把fragment看成是activity的模塊化部分。它擁有自己的生命周期,接受它自己的輸入事件,你能夠在activity執行時加入或者刪除它(有點像是一個“子activity”。你

Struts2 數據標簽

env 字符串 property http smi syn mit selected ont Struts2 的數據標簽主要用於操作頁面上顯示的數據。下面列出了主要的數據標簽: action標簽 此標簽允許開發人員通過指定action名稱和可選的命名空間直接從JSP頁面調用

Cocos2dx 3.0 過渡篇C++11多線程std::thread的簡單使用(下)

fonts fun avi 2dx read 來源 cpp break 輸出 本篇接上篇繼續講:上篇傳送門:http://blog.csdn.net/star530/article/details/24186783簡單的東西我都說的幾乎相同了,想挖點深的差點把自己給填進

Python學習筆記

準備 for ring 價格 python use imp pri exce 使用ElementTree解析XML文件 # 導入Python中內置的處理XML文件的模塊try: import xml.etree.cElementTree as ETexcept Imp

Java學習筆記:類型轉換和instanceof關鍵字

方法 png true feed out 實例 strong 運算符 nbsp 基本數據類型轉換: 自動類型轉換:把大類型的數據賦值給大類型的變量(此時的大小指的是容量的範圍) 1 byte b = 12; //byte是一個字節 2 int i = b; //i

圖像處理基於數據驅動的人臉卡通動畫生成-Siggraph Asia 2014

ssi 原來 大於 搜索 nbsp details 一起 fontsize man http://blog.csdn.net/garfielder007/article/details/50582018 在現實生活中,我們經常會去評價一個人,長得是否漂亮、是不是帥哥美女,然

Python學習 —— 前端之JavaScript

開始 mode mba html 國際 sca 執行 嵌入式 規範 轉載自http://www.cnblogs.com/liwenzhou/p/8004649.html 一、JavaScript概述   1.JavaScript的歷史 1992年Nombas開發出C-mi

企業分布式微服務雲SpringCloud SpringBoot mybatis 構建restful API

tis lis bind strong img tro entity 數據源 host 引入依賴 在pom文件引入mybatis-spring-boot-starter的依賴: <dependency> <groupId>o

JmeterJmeter常見問題及場景應用

con 當前 登陸 log jenkins path 業務 參數 以及   Jmeter作為工具來講,已經是一個相對比較牛掰的工具,除了它能夠支持那麽多協議以及方法之外,更在與它的前置處理以及後置處理、同步監控的人性化。當然,所有的工具、框架都是作為業務的支撐,如果不能滿足

Linux學習總結正則三劍客之awk

awkawk 也是流式編輯器,它比sed的功能更強大 1.截取文檔中的某段 awk -F ‘:‘ ‘{print $1}‘ /etc/passwd |head -2-F 指定分割符,不指定以空格或者tab為分隔符print 為打印動作$1 為第一字段, $2 為第二字段,依次類推,$0標示整行那麽打印整個文檔

Vue使用express模擬接口數據

引入 undefine 數據 img htm eve IT image customer 1.下載express ... 2.使用vue-cli下載好項目文件 ... 3.找到文件 build - webpack.dev.conf.js ‘use strict‘ cons

Android開發實戰:淺談android:clipChildren屬性

.cn viewpage port 部分 lap ole 有一個 默認 版本 原文:Android開發實戰(二十一):淺談android:clipChildren屬性實現功能: 1、APP主界面底部模塊欄 2、ViewPager一屏多個界面顯示 3、........

LinuxShell編程

流程控制 大寫 去除 自定義函數 判斷 大數 文件名 BE mkdir 21.1 為什麽要學習Shell編程 (1)Linux運維工程師在進行服務器集群管理時,需要編寫Shell程序來進行服務器管理。 (2)對於JavaEE和Python程序員來說,工作的需要,你的老大會要

階構造模式

C++ 二階構造 半成品對象 我們之前學習了構造函數,類的構造函數用於對象的初始化。構造函數與類同名並且沒有返回值,構造函數在對象定義時自動被定義。那麽我們就思考下:1、如何判斷構造函數的執行結果呢?2、在構造函數中執行 return 語句會發生什麽呢?3、構造函數執行結束是否意味

類型轉換指令

顯式 範圍 RR oat 數據 運行時異常 輸入 支持 大數字 一、概念 類型轉換指令可以將兩種 Java 虛擬機數值類型進行相互轉換,這些轉換操作一般用於實現用戶代碼的顯式類型轉換操作,或者用來處理 Java 虛擬機字節碼指令集中指令非完全獨立獨立的問題。 Java