1. 程式人生 > >libuv 之定時器的使用

libuv 之定時器的使用

libuv 定時器使用,一個定時器配合著一個回撥函式,簡單方便,只管定時和時間到了的處理函式,libuv去到哪都是回撥,精華所在。

使用的API,主要是uv_timer_start

uv_timer_start,引數有4個,分別是:timer定時器,回撥函式,延時時間,重複間隔。

UV_EXTERN int uv_timer_start(uv_timer_t* handle, uv_timer_cb cb, uint64_t timeout, uint64_t repeat);

敲黑板,畫重點:在呼叫完之後,或者需要主動關閉定時器釋放時,不再使用的時候,一定要呼叫uv_close,不然會造成記憶體洩露!

程式碼如下:

#ifdef _WIN32 
#include <vld.h>
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"Iphlpapi.lib")
#pragma comment(lib,"Psapi.lib")
#endif

#include <stdio.h>
#include <iostream>
#include <uv.h>

using namespace std;

int repeat = 0;
static int repeatCount = 10;

static void callback(uv_timer_t *handle) {
	repeat = repeat + 1;
	if (repeatCount == repeat) {
		uv_timer_stop(handle);
		//用完一定要呼叫uv_close,不然會記憶體洩露
		uv_close((uv_handle_t*)handle, NULL);
	}
}


int main() {
	uv_loop_t *loop = uv_default_loop();

	uv_timer_t timer_req;

	uv_timer_init(loop, &timer_req);

	uv_timer_start(&timer_req, callback, 1000, repeatCount);

	return uv_run(loop, UV_RUN_DEFAULT);
}

相關推薦

libuv 定時的使用

libuv 定時器使用,一個定時器配合著一個回撥函式,簡單方便,只管定時和時間到了的處理函式,libuv去到哪都是回撥,精華所在。 使用的API,主要是uv_timer_start uv_timer_start,引數有4個,分別是:timer定時器,回撥函式,延時時間,重

定時/計數器0定時

.com 函數調用 wid 延時 mod main images .cn cnblogs /* 效果說明: 定時器中斷:通過單片機計數使程序執行 一秒中斷一次,中斷發生時高四位亮一秒,中斷發生後又回到主程序 */ #include <

11.按鍵驅動定時防抖(詳解)

pri pos long 超時時間 device queue pen fun cti 本節目標:   通過定時器來防止按鍵抖動,測試程序是使用上節的:阻塞操作的測試程序 1.如下圖所示,在沒有定時器防抖情況下,按鍵沒有穩定之前會多次進入中斷,使得輸出多個相同信息出來

(筆記)Linux內核學習(八)定時和時間管理

全局變量 define 結構 load 統計 object 一個 完成 溢出 一 內核中的時間觀念 內核在硬件的幫助下計算和管理時間。硬件為內核提供一個系統定時器用以計算流逝的時間。系 統定時器以某種頻率自行觸發,產生時鐘中斷,進入內核時鐘中斷處理程序中進行

java學習筆記定時

blog div this rgs date row demo sdf 時間 定時器 1 package pack01_timer; 2 3 import java.io.File; 4 import java.text.ParseException; 5 i

Linux驅動定時在按鍵去抖中的應用

arc div 測試 完整 esc arm 是否 reg blog 機械按鍵在按下的過程中會出現抖動的情況,如下圖,這樣就會導致本來按下一次按鍵的過程會出現多次中斷,導致判斷出錯。在按鍵驅動程序中我們可以這麽做: 在按鍵驅動程序中我們可以這麽做來取消按鍵抖動的影響:當出現

js定時操作

abs 第一個字符 tin type itl ntb 跑馬燈 get function <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8">

遊戲伺服器定時

遊戲伺服器之定時器 1.1 簡單介紹     在遊戲中的關於定時任務的應用很多,在此就不舉例了。所謂定時任務,簡單來說就是t毫秒後執行相應的任務。因為這裡用的例子都是博主工作時用到的遊戲伺服器中的,所以相關程式碼會比較詳盡,如若只是瞭解定時器的大概實現,按照博主所標註的順序,只看重點

Java多執行緒學習筆記20定時Timer

詳細程式碼見:github程式碼地址   本節內容:     定時器Timer的使用及分析 1) 如何實現指定時間執行任務 2) 如何實現按指定週期執行任務   第五章 定時器Timer 定時/計劃

PHP 程式碼自動執行定時

<?php ignore_user_abort();//關閉瀏覽器仍然執行 set_time_limit(0);//讓程式一直執行下去 $interval=3;//每隔一定時間執行 do{ $msg = date("Y-m-d H:i:s"); file_put_content

AngularJS定時(timeout)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

51微控制器學習筆記定時程式設計

一、定時器/計數器概述 1.相關暫存器 (1)TMOD——方式控制暫存器     GATE C/T M1 M0(T1 T0)   GATE=0,定時器/計數器的執行由內部TR0/TR1置1選通;   GATE=1,定時器/計數器的執行由外部中斷(I引腳P3.2/P3.3)和內部TR0/TR1 置1共

redis 在業務層面的應用定時

    前幾天出去面試,大家都喜歡聊redis,一個是底層資料結構的實現,一個是在業務層的使用,這裡就結合一些簡單的python程式碼,講下怎樣用redis 做應用層面的定時器。     首先,當大批量任務做超時管理,就會涉及到如何實現定時器,使系統開銷最

muduo_net程式碼剖析定時

1、Timer*類簡介 這裡涉及了3個類TimerId、Timer、TimerQueue,反映到實際使用,主要是EventLoop中的三個函式:runAt()、runAfter()、runEvery()。 簡單來說,TimerQueue是用來進行管理排程的; 而Time

React hooks初試定時引發的bug

前言   週末嘗試了一下React新的hooks功能,來封裝一個元件,遇到一個bug,所以記錄一下過程! 報錯如下: Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it

React16.7 hooks初探定時引發的問題

前言 週末嘗試了一下React新的hooks功能,來封裝一個元件,遇到一個bug,所以記錄一下過程! 報錯如下: Warning: Can’t perform a React state update on an unmounted component. Thi

DSP2812定時

DSP TMS320F2812晶片內部有3個32位的CPU定時器-Timer0、Timer1、Timer2,其中CPU定時器1,2被系統保留,定時器0供使用者使用。 定時器工作原理說明 CPU定時器的工作原理如下圖所示 所包含的暫存器主要有預定標暫存器TPR、

15-HAL庫定時學習

1.基本定時器(TIM6/TIM7) 包含時鐘源(CK_INT),1個16位自動過載遞增計數器(CK_ARR),1個16位可程式設計預分頻器(CK_PSC),計數器暫存器(CK_CNT),觸發DAC的控制器組成。時鐘源為APB外設時鐘,定時事件生成事件主要由CK_PSC

51微控制器定時

參考資料:金沙灘工作室《手把手教你51微控制器》 一開始狀態不好,前一天逛淘寶到12點才睡,很困。在ict雙創實驗室困。聽了一遍很模糊,對突然冒出的TL、TH、TR、TF等很陌生。上csdn看了一下後,感覺理解了一些。決定再看一次視訊,又看了一次視訊清晰很多。感覺初學

STM32CubeMX定時控制微秒延時詳解

寫在前面的話,為什麼另需定時器進行微秒級延時。 1.在HAL韌體庫中只有使用Systick作為延時計數器,毫秒級延時HAL_Delay()。為了增加精確的微秒級延時,一般都是更改Systick配置引數,但HAL韌體庫許多地方都使用了HAL_Delay()函式,